Merge branch 'master' of github.com:Sankore/Sankore-3.1

preferencesAboutTextFull
Claudio Valerio 12 years ago
commit 2b29e06323
  1. 24
      Sankore_3.1.pro
  2. 5
      resources/forms/mainWindow.ui
  3. 3327
      resources/i18n/sankore_cs.ts
  4. 3523
      resources/i18n/sankore_el.ts
  5. 148
      resources/i18n/sankore_es.ts
  6. 269
      resources/i18n/sankore_it.ts
  7. 148
      resources/i18n/sankore_ja.ts
  8. 146
      resources/i18n/sankore_nl.ts
  9. 153
      resources/i18n/sankore_pt.ts
  10. 871
      resources/i18n/sankore_sk.ts
  11. BIN
      resources/images/toolbar/group.png
  12. BIN
      resources/images/toolbar/ungroup.png
  13. BIN
      resources/library/interactivities/Transformation.wgt/css/images/trgDown.png
  14. BIN
      resources/library/interactivities/Transformation.wgt/css/images/trgLeft.png
  15. BIN
      resources/library/interactivities/Transformation.wgt/css/images/trgRight.png
  16. BIN
      resources/library/interactivities/Transformation.wgt/css/images/trgUp.png
  17. 57
      resources/library/interactivities/Transformation.wgt/css/ubw-main.css
  18. 481
      resources/library/interactivities/Transformation.wgt/js/lib/ubw-main.js
  19. 349
      resources/library/interactivities/Transformation.wgt/js/main.js
  20. 73
      src/adaptors/UBCFFSubsetAdaptor.cpp
  21. 4
      src/adaptors/UBCFFSubsetAdaptor.h
  22. 2
      src/adaptors/UBSvgSubsetAdaptor.cpp
  23. 4
      src/board/UBBoardController.cpp
  24. 4
      src/board/UBBoardView.cpp
  25. 5
      src/board/UBDrawingController.cpp
  26. 3
      src/core/UB.h
  27. 4
      src/core/UBSettings.cpp
  28. 37
      src/domain/UBGraphicsGroupContainerItem.cpp
  29. 4
      src/domain/UBGraphicsGroupContainerItemDelegate.cpp
  30. 22
      src/domain/UBGraphicsItemDelegate.cpp
  31. 5
      src/domain/UBGraphicsItemDelegate.h
  32. 15
      src/domain/UBGraphicsMediaItem.cpp
  33. 11
      src/domain/UBGraphicsMediaItem.h
  34. 4
      src/domain/UBGraphicsMediaItemDelegate.cpp
  35. 4
      src/domain/UBGraphicsPixmapItem.cpp
  36. 12
      src/domain/UBGraphicsScene.cpp
  37. 2
      src/domain/UBGraphicsStrokesGroup.cpp
  38. 1
      src/domain/UBGraphicsSvgItem.cpp
  39. 2
      src/domain/UBGraphicsTextItem.cpp
  40. 2
      src/domain/UBGraphicsWebView.cpp
  41. 10
      src/domain/UBItem.cpp
  42. 3
      src/domain/UBItem.h
  43. 23
      src/gui/UBFeaturesWidget.cpp
  44. 2
      src/gui/UBFeaturesWidget.h
  45. 1
      src/tools/UBGraphicsCurtainItem.cpp

@ -328,6 +328,25 @@ macx {
QMAKE_BUNDLE_DATA += TRANSLATION_ca QMAKE_BUNDLE_DATA += TRANSLATION_ca
} }
exists(resources/i18n/sankore_el.qm) {
TRANSLATION_el.files = resources/i18n/sankore_el.qm \
resources/i18n/Localizable.strings
TRANSLATION_el.path = "$$RESOURCES_DIR/el.lproj"
QMAKE_BUNDLE_DATA += TRANSLATION_el
}
exists(resources/i18n/sankore_tr.qm) {
TRANSLATION_tr.files = resources/i18n/sankore_tr.qm \
resources/i18n/Localizable.strings
TRANSLATION_tr.path = "$$RESOURCES_DIR/tr.lproj"
QMAKE_BUNDLE_DATA += TRANSLATION_tr
}
exists(resources/i18n/sankore_cs.qm) {
TRANSLATION_cs.files = resources/i18n/sankore_cs.qm \
resources/i18n/Localizable.strings
TRANSLATION_cs.path = "$$RESOURCES_DIR/cs.lproj"
QMAKE_BUNDLE_DATA += TRANSLATION_cs
}
QMAKE_BUNDLE_DATA += UB_ETC \ QMAKE_BUNDLE_DATA += UB_ETC \
UB_LIBRARY \ UB_LIBRARY \
UB_FONTS \ UB_FONTS \
@ -391,7 +410,10 @@ TRANSLATIONS = resources/i18n/sankore_en.ts \
resources/i18n/sankore_pt.ts \ resources/i18n/sankore_pt.ts \
resources/i18n/sankore_sk.ts \ resources/i18n/sankore_sk.ts \
resources/i18n/sankore_bg.ts \ resources/i18n/sankore_bg.ts \
resources/i18n/sankore_ca.ts resources/i18n/sankore_ca.ts \
resources/i18n/sankore_el.ts \
resources/i18n/sankore_tr.ts \
resources/i18n/sankore_cs.ts
INSTALLS = UB_ETC \ INSTALLS = UB_ETC \
UB_I18N \ UB_I18N \

@ -1632,6 +1632,9 @@
</property> </property>
</action> </action>
<action name="actionGroupItems"> <action name="actionGroupItems">
<property name="checkable">
<bool>true</bool>
</property>
<property name="enabled"> <property name="enabled">
<bool>false</bool> <bool>false</bool>
</property> </property>
@ -1641,7 +1644,7 @@
<normalon>:/images/toolbar/ungroup.png</normalon>:/images/toolbar/group.png</iconset> <normalon>:/images/toolbar/ungroup.png</normalon>:/images/toolbar/group.png</iconset>
</property> </property>
<property name="text"> <property name="text">
<string>Group Items</string> <string>Group</string>
</property> </property>
<property name="toolTip"> <property name="toolTip">
<string>Group items</string> <string>Group items</string>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS> <!DOCTYPE TS>
<TS version="2.0" language="en_US"> <TS version="2.0" language="es_ES">
<context> <context>
<name>BlackoutWidget</name> <name>BlackoutWidget</name>
<message> <message>
@ -801,27 +801,27 @@
</message> </message>
<message> <message>
<source>Group Items</source> <source>Group Items</source>
<translation type="unfinished"></translation> <translation>Agrupar Elementos</translation>
</message> </message>
<message> <message>
<source>Group items</source> <source>Group items</source>
<translation type="unfinished"></translation> <translation>Agrupar elementos</translation>
</message> </message>
<message> <message>
<source>Play</source> <source>Play</source>
<translation type="unfinished"></translation> <translation>Reproducir</translation>
</message> </message>
<message> <message>
<source>Interact with items</source> <source>Interact with items</source>
<translation type="unfinished"></translation> <translation>Interactuar con los elementos</translation>
</message> </message>
<message> <message>
<source>Erase Background</source> <source>Erase Background</source>
<translation type="unfinished"></translation> <translation>Borrar el Fondo</translation>
</message> </message>
<message> <message>
<source>Remove the backgound</source> <source>Remove the backgound</source>
<translation type="unfinished"></translation> <translation>Eliminar el fondo</translation>
</message> </message>
</context> </context>
<context> <context>
@ -951,7 +951,7 @@
</message> </message>
<message> <message>
<source>CapturedImage</source> <source>CapturedImage</source>
<translation type="unfinished"></translation> <translation>Imagen capturada</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1135,7 +1135,7 @@
</message> </message>
<message> <message>
<source>Title page</source> <source>Title page</source>
<translation type="unfinished"></translation> <translation>Portada</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1181,7 +1181,7 @@
</message> </message>
<message> <message>
<source>Title page</source> <source>Title page</source>
<translation type="unfinished"></translation> <translation>Portada</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1248,23 +1248,23 @@
<name>UBExportCFF</name> <name>UBExportCFF</name>
<message> <message>
<source>Export to IWB</source> <source>Export to IWB</source>
<translation type="unfinished"></translation> <translation>Exportar a IWB</translation>
</message> </message>
<message> <message>
<source>Export as IWB File</source> <source>Export as IWB File</source>
<translation type="unfinished"></translation> <translation>Exportar como fichero IWB</translation>
</message> </message>
<message> <message>
<source>Exporting document...</source> <source>Exporting document...</source>
<translation type="unfinished">Exportando documento...</translation> <translation>Exportando documento...</translation>
</message> </message>
<message> <message>
<source>Export successful.</source> <source>Export successful.</source>
<translation type="unfinished">Exportación satisfactoria.</translation> <translation>Exportación satisfactoria.</translation>
</message> </message>
<message> <message>
<source>Export failed.</source> <source>Export failed.</source>
<translation type="unfinished"></translation> <translation>Fallo en la exportación</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1367,61 +1367,61 @@
<name>UBFeatureProperties</name> <name>UBFeatureProperties</name>
<message> <message>
<source>Add to page</source> <source>Add to page</source>
<translation type="unfinished">Añadir a la página</translation> <translation>Añadir a la página</translation>
</message> </message>
<message> <message>
<source>Set as background</source> <source>Set as background</source>
<translation type="unfinished">Definir como fondo</translation> <translation>Definir como fondo</translation>
</message> </message>
<message> <message>
<source>Add to library</source> <source>Add to library</source>
<translation type="unfinished">Añadir a biblioteca</translation> <translation>Añadir a biblioteca</translation>
</message> </message>
<message> <message>
<source>Object informations</source> <source>Object informations</source>
<translation type="unfinished">Información del objeto</translation> <translation>Información del objeto</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBFeaturesActionBar</name> <name>UBFeaturesActionBar</name>
<message> <message>
<source>Add to favorites</source> <source>Add to favorites</source>
<translation type="unfinished">Añadir a favoritos</translation> <translation>Añadir a favoritos</translation>
</message> </message>
<message> <message>
<source>Share</source> <source>Share</source>
<translation type="unfinished">Compartir</translation> <translation>Compartir</translation>
</message> </message>
<message> <message>
<source>Search</source> <source>Search</source>
<translation type="unfinished"></translation> <translation>Buscar</translation>
</message> </message>
<message> <message>
<source>Delete</source> <source>Delete</source>
<translation type="unfinished">Eliminar</translation> <translation>Eliminar</translation>
</message> </message>
<message> <message>
<source>Back to folder</source> <source>Back to folder</source>
<translation type="unfinished">Regresar a la carpeta</translation> <translation>Regresar a la carpeta</translation>
</message> </message>
<message> <message>
<source>Remove from favorites</source> <source>Remove from favorites</source>
<translation type="unfinished">Eliminar de favoritos</translation> <translation>Eliminar de favoritos</translation>
</message> </message>
<message> <message>
<source>Create new folder</source> <source>Create new folder</source>
<translation type="unfinished">Crear nueva carpeta</translation> <translation>Crear nueva carpeta</translation>
</message> </message>
<message> <message>
<source>Rescan file system</source> <source>Rescan file system</source>
<translation type="unfinished"></translation> <translation>Comprobar los ficheros del sistema</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBFeaturesController</name> <name>UBFeaturesController</name>
<message> <message>
<source>ImportedImage</source> <source>ImportedImage</source>
<translation type="unfinished">Imagen importada</translation> <translation>Imagen importada</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1765,23 +1765,23 @@ Do you want to ignore these errors for this host?</source>
<name>UBPlatformUtils</name> <name>UBPlatformUtils</name>
<message> <message>
<source>English</source> <source>English</source>
<translation type="unfinished"></translation> <translation>Inglés</translation>
</message> </message>
<message> <message>
<source>Russian</source> <source>Russian</source>
<translation type="unfinished"></translation> <translation>Ruso</translation>
</message> </message>
<message> <message>
<source>German</source> <source>German</source>
<translation type="unfinished"></translation> <translation>Alemán</translation>
</message> </message>
<message> <message>
<source>French</source> <source>French</source>
<translation type="unfinished"></translation> <translation>Francés</translation>
</message> </message>
<message> <message>
<source>Swiss French</source> <source>Swiss French</source>
<translation type="unfinished"></translation> <translation>Francés-Suizo</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1911,33 +1911,33 @@ Do you want to ignore these errors for this host?</source>
<name>UBTGActionWidget</name> <name>UBTGActionWidget</name>
<message> <message>
<source>Teacher</source> <source>Teacher</source>
<translation type="unfinished"></translation> <translation>Profesor</translation>
</message> </message>
<message> <message>
<source>Student</source> <source>Student</source>
<translation type="unfinished"></translation> <translation>Estudiante</translation>
</message> </message>
<message> <message>
<source>Type task here ...</source> <source>Type task here ...</source>
<translation type="unfinished"></translation> <translation>Escribir la tarea aquí ...</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTGMediaWidget</name> <name>UBTGMediaWidget</name>
<message> <message>
<source>drop media here ...</source> <source>drop media here ...</source>
<translation type="unfinished"></translation> <translation>Suelte el elemento multimedia aquí ...</translation>
</message> </message>
<message> <message>
<source>Type title here...</source> <source>Type title here...</source>
<translation type="unfinished"></translation> <translation>Escriba aquí el título ...</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTGUrlWidget</name> <name>UBTGUrlWidget</name>
<message> <message>
<source>Insert link title here...</source> <source>Insert link title here...</source>
<translation type="unfinished"></translation> <translation>Inserte aquí el título del enlace ...</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1951,131 +1951,131 @@ Do you want to ignore these errors for this host?</source>
<name>UBTeacherGuideEditionWidget</name> <name>UBTeacherGuideEditionWidget</name>
<message> <message>
<source>Type title here ...</source> <source>Type title here ...</source>
<translation type="unfinished"></translation> <translation>Escriba el título aquí ...</translation>
</message> </message>
<message> <message>
<source>Type comment here ...</source> <source>Type comment here ...</source>
<translation type="unfinished"></translation> <translation>Escriba el comentario aquí ...</translation>
</message> </message>
<message> <message>
<source>Add an action</source> <source>Add an action</source>
<translation type="unfinished"></translation> <translation>Añadir una acción</translation>
</message> </message>
<message> <message>
<source>Add a media</source> <source>Add a media</source>
<translation type="unfinished"></translation> <translation>Añadir un fichero multimedia</translation>
</message> </message>
<message> <message>
<source>Add a link</source> <source>Add a link</source>
<translation type="unfinished"></translation> <translation>Añadir un enlace</translation>
</message> </message>
<message> <message>
<source>Page: %0</source> <source>Page: %0</source>
<translation type="unfinished"></translation> <translation>Página: %0</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTeacherGuidePageZeroWidget</name> <name>UBTeacherGuidePageZeroWidget</name>
<message> <message>
<source>Type session title here ...</source> <source>Type session title here ...</source>
<translation type="unfinished"></translation> <translation>Escriba aquí el título de la sesión ...</translation>
</message> </message>
<message> <message>
<source>Author(s)</source> <source>Author(s)</source>
<translation type="unfinished"></translation> <translation>Autor(es)</translation>
</message> </message>
<message> <message>
<source>Type authors here ...</source> <source>Type authors here ...</source>
<translation type="unfinished"></translation> <translation>Escriba aquí los autores ...</translation>
</message> </message>
<message> <message>
<source>Objective(s)</source> <source>Objective(s)</source>
<translation type="unfinished"></translation> <translation>Objetivo(s)</translation>
</message> </message>
<message> <message>
<source>Type objectives here...</source> <source>Type objectives here...</source>
<translation type="unfinished"></translation> <translation>Escriba aquí los objetivos ...</translation>
</message> </message>
<message> <message>
<source>Resource indexing</source> <source>Resource indexing</source>
<translation type="unfinished"></translation> <translation>Ordenando los recursos</translation>
</message> </message>
<message> <message>
<source>Keywords:</source> <source>Keywords:</source>
<translation type="unfinished"></translation> <translation>Palabras Clave:</translation>
</message> </message>
<message> <message>
<source>Type keywords here ...</source> <source>Type keywords here ...</source>
<translation type="unfinished"></translation> <translation>Escriba aquí las palabras clave ...</translation>
</message> </message>
<message> <message>
<source>Level:</source> <source>Level:</source>
<translation type="unfinished"></translation> <translation>Nivel:</translation>
</message> </message>
<message> <message>
<source>Subjects:</source> <source>Subjects:</source>
<translation type="unfinished"></translation> <translation>Materias:</translation>
</message> </message>
<message> <message>
<source>Type:</source> <source>Type:</source>
<translation type="unfinished"></translation> <translation>Tipo:</translation>
</message> </message>
<message> <message>
<source>Licence</source> <source>Licence</source>
<translation type="unfinished"></translation> <translation>Licencia</translation>
</message> </message>
<message> <message>
<source>Attribution CC BY</source> <source>Attribution CC BY</source>
<translation type="unfinished"></translation> <translation>Atribución CC BY</translation>
</message> </message>
<message> <message>
<source>Attribution-NoDerivs CC BY-ND</source> <source>Attribution-NoDerivs CC BY-ND</source>
<translation type="unfinished"></translation> <translation>Atribución-NoDerivs CC BY-ND</translation>
</message> </message>
<message> <message>
<source>Attribution-ShareAlike CC BY-SA</source> <source>Attribution-ShareAlike CC BY-SA</source>
<translation type="unfinished"></translation> <translation>Atribución-ShareAlike CC BY-SA</translation>
</message> </message>
<message> <message>
<source>Attribution-NonCommercial CC BY-NC</source> <source>Attribution-NonCommercial CC BY-NC</source>
<translation type="unfinished"></translation> <translation>Atribución-NonCommercial CC BY-NC</translation>
</message> </message>
<message> <message>
<source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source> <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
<translation type="unfinished"></translation> <translation>Atribución-NonCommercial-Noderivs CC BY-NC-ND</translation>
</message> </message>
<message> <message>
<source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source> <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
<translation type="unfinished"></translation> <translation>Atribución-NonCommercial-ShareAlike CC BY-NC-SA</translation>
</message> </message>
<message> <message>
<source>Public domain</source> <source>Public domain</source>
<translation type="unfinished"></translation> <translation>Dominio Público</translation>
</message> </message>
<message> <message>
<source>Copyright</source> <source>Copyright</source>
<translation type="unfinished"></translation> <translation>Copyright</translation>
</message> </message>
<message> <message>
<source>Created the: <source>Created the:
</source> </source>
<translation type="unfinished"></translation> <translation>Creado el:</translation>
</message> </message>
<message> <message>
<source>Updated the: <source>Updated the:
</source> </source>
<translation type="unfinished"></translation> <translation>Actualizado el:</translation>
</message> </message>
<message> <message>
<source>Title page</source> <source>Title page</source>
<translation type="unfinished"></translation> <translation>Portada</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTeacherGuidePresentationWidget</name> <name>UBTeacherGuidePresentationWidget</name>
<message> <message>
<source>Page: %0</source> <source>Page: %0</source>
<translation type="unfinished"></translation> <translation>Página: %0</translation>
</message> </message>
</context> </context>
<context> <context>
@ -3266,7 +3266,11 @@ p, li { white-space: pre-wrap; }
&lt;tr&gt; &lt;tr&gt;
&lt;td style=&quot;border: none;&quot;&gt; &lt;td style=&quot;border: none;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;The licences are in English to respect the official and legal approved translation.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;The licences are in English to respect the official and legal approved translation.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;MS Shell Dlg 2&apos;; font-size:8.25pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-family:&apos;Lucida Grande&apos;; font-size:10pt;&quot;&gt;Al hacer clic en &apos;Descargar&apos; usted certifica que posee todos los derechos sobre el contenido o que está autorizado por el propietario a publicar el contenido en YouTube, y que éste cumple con los términos de servicio de YouTube que aparecen en&lt;/span&gt;&lt;a href=&quot;http://www.youtube.com/t/terms&quot;&gt;&lt;span style=&quot; font-family:&apos;Lucida Grande&apos;; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;http://www.youtube.com/t/terms&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
@ -3281,7 +3285,7 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<source>Credits</source> <source>Credits</source>
<translation type="unfinished"></translation> <translation>Créditos</translation>
</message> </message>
<message utf8="true"> <message utf8="true">
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
@ -3338,7 +3342,7 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; © Henri Rogelet &amp;lt;h.rogelet@free.fr&amp;gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; © Henri Rogelet &amp;lt;h.rogelet@free.fr&amp;gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Autorisation pour un usage non commercial&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Autorisation pour un usage non commercial&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : http://pointecole.free.fr/polices.html&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : http://pointecole.free.fr/polices.html&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
</context> </context>
<context> <context>

@ -1,6 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS><TS>
<!DOCTYPE TS>
<TS version="2.0">
<context> <context>
<name>BlackoutWidget</name> <name>BlackoutWidget</name>
<message> <message>
@ -50,7 +48,7 @@
<name>IntranetPodcastPublishingDialog</name> <name>IntranetPodcastPublishingDialog</name>
<message> <message>
<source>Publish Podcast to YouTube</source> <source>Publish Podcast to YouTube</source>
<translation>Pubblica su youtube</translation> <translation>Pubblica su YouTube</translation>
</message> </message>
<message> <message>
<source>Title</source> <source>Title</source>
@ -141,7 +139,7 @@
</message> </message>
<message> <message>
<source>Manage Documents</source> <source>Manage Documents</source>
<translation>Organizza documenti</translation> <translation>Gestione documenti</translation>
</message> </message>
<message> <message>
<source>Ctrl+D</source> <source>Ctrl+D</source>
@ -273,7 +271,7 @@
</message> </message>
<message> <message>
<source>Show Library</source> <source>Show Library</source>
<translation>Visualizza biblioteca</translation> <translation>Visualizza Biblioteca</translation>
</message> </message>
<message> <message>
<source>Ctrl+L</source> <source>Ctrl+L</source>
@ -649,7 +647,7 @@
</message> </message>
<message> <message>
<source>Add To Library</source> <source>Add To Library</source>
<translation>Aggiungi alla biblioteca</translation> <translation>Aggiungi alla Biblioteca</translation>
</message> </message>
<message> <message>
<source>Add Item To Library</source> <source>Add Item To Library</source>
@ -767,27 +765,27 @@
<source>Ctrl+H</source> <source>Ctrl+H</source>
<translation>Ctrl+H</translation> <translation>Ctrl+H</translation>
</message> </message>
<message utf8="true"> <message encoding="UTF-8">
<source>Open-Sankoré</source> <source>Open-Sankoré</source>
<translation>Open-Sankoré</translation> <translation>Open-Sankoré</translation>
</message> </message>
<message utf8="true"> <message encoding="UTF-8">
<source>Quit Open-Sankoré</source> <source>Quit Open-Sankoré</source>
<translation>Chiudi Open-Sankoré</translation> <translation>Chiudi Open-Sankoré</translation>
</message> </message>
<message utf8="true"> <message encoding="UTF-8">
<source>Open-Sankoré Editor</source> <source>Open-Sankoré Editor</source>
<translation>Editore Open-Sankoré</translation> <translation>Editore Open-Sankoré</translation>
</message> </message>
<message utf8="true"> <message encoding="UTF-8">
<source>Show Open-Sankoré Widgets Editor</source> <source>Show Open-Sankoré Widgets Editor</source>
<translation>Mostra l&apos;editore dei Widgets Open-Sankoré</translation> <translation>Mostra l&apos;editore dei Widgets Open-Sankoré</translation>
</message> </message>
<message utf8="true"> <message encoding="UTF-8">
<source>Hide Open-Sankoré</source> <source>Hide Open-Sankoré</source>
<translation>Nascondi Open-Sankoré</translation> <translation>Nascondi Open-Sankoré</translation>
</message> </message>
<message utf8="true"> <message encoding="UTF-8">
<source>Hide Open-Sankoré Application</source> <source>Hide Open-Sankoré Application</source>
<translation>Nascondi l&apos;applicazione Open-Sankoré</translation> <translation>Nascondi l&apos;applicazione Open-Sankoré</translation>
</message> </message>
@ -801,27 +799,27 @@
</message> </message>
<message> <message>
<source>Group Items</source> <source>Group Items</source>
<translation type="unfinished"></translation> <translation>Raggruppa</translation>
</message> </message>
<message> <message>
<source>Group items</source> <source>Group items</source>
<translation type="unfinished"></translation> <translation>Raggruppa gli oggetti selezionati</translation>
</message> </message>
<message> <message>
<source>Play</source> <source>Play</source>
<translation type="unfinished"></translation> <translation>Riproduci</translation>
</message> </message>
<message> <message>
<source>Interact with items</source> <source>Interact with items</source>
<translation type="unfinished"></translation> <translation>Interagisci con gli oggetti</translation>
</message> </message>
<message> <message>
<source>Erase Background</source> <source>Erase Background</source>
<translation type="unfinished"></translation> <translation>Cancella sfondo</translation>
</message> </message>
<message> <message>
<source>Remove the backgound</source> <source>Remove the backgound</source>
<translation type="unfinished"></translation> <translation>Rimuove lo sfondo</translation>
</message> </message>
</context> </context>
<context> <context>
@ -832,7 +830,7 @@
</message> </message>
<message> <message>
<source>Username:</source> <source>Username:</source>
<translation>Nome utente</translation> <translation>Nome utente:</translation>
</message> </message>
<message> <message>
<source>Password:</source> <source>Password:</source>
@ -843,11 +841,11 @@
<name>ProxyDialog</name> <name>ProxyDialog</name>
<message> <message>
<source>Proxy Authentication</source> <source>Proxy Authentication</source>
<translation>Autenticazione con Proxy</translation> <translation>Autenticazione Proxy</translation>
</message> </message>
<message> <message>
<source>Connect to Proxy</source> <source>Connect to Proxy</source>
<translation>Connessione con Proxy</translation> <translation>Connessione al Proxy</translation>
</message> </message>
<message> <message>
<source>Username:</source> <source>Username:</source>
@ -947,11 +945,11 @@
<name>UBBoardPaletteManager</name> <name>UBBoardPaletteManager</name>
<message> <message>
<source>Error Adding Image to Library</source> <source>Error Adding Image to Library</source>
<translation>Errore durante l&apos;aggiunta dell&apos;immagine alla biblioteca</translation> <translation>Errore durante l&apos;aggiunta dell&apos;immagine alla Biblioteca</translation>
</message> </message>
<message> <message>
<source>CapturedImage</source> <source>CapturedImage</source>
<translation type="unfinished"></translation> <translation>Immagine catturata</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1126,16 +1124,15 @@
<source>The document &apos;%1&apos; has been generated with a newer version of Sankore (%2). By opening it, you may lose some information. Do you want to proceed?</source> <source>The document &apos;%1&apos; 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>Il documento &apos;%1&apos; è stato generato con una versione più recente di Sankore (%2). Aprendolo, si potrebbero perdere alcune informazioni. Vuoi continuare?</translation> <translation>Il documento &apos;%1&apos; è stato generato con una versione più recente di Sankore (%2). Aprendolo, si potrebbero perdere alcune informazioni. Vuoi continuare?</translation>
</message> </message>
<message numerus="yes"> <message>
<source>Are you sure you want to remove %n page(s) from the selected document &apos;%1&apos;?</source> <source>Are you sure you want to remove %n page(s) from the selected document &apos;%1&apos;?</source>
<translation type="unfinished"> <translation>
<numerusform> Sei sicuro di voler rimuovere %n pagina(e) dal documento &apos;%1&apos; selezionato?
</numerusform>
</translation> </translation>
</message> </message>
<message> <message>
<source>Title page</source> <source>Title page</source>
<translation type="unfinished"></translation> <translation>Titolo pagina</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1181,7 +1178,7 @@
</message> </message>
<message> <message>
<source>Title page</source> <source>Title page</source>
<translation type="unfinished"></translation> <translation>Titolo pagina</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1225,11 +1222,10 @@
<source>Copying page %1/%2</source> <source>Copying page %1/%2</source>
<translation>Sto copiando pagina %1/%2</translation> <translation>Sto copiando pagina %1/%2</translation>
</message> </message>
<message numerus="yes"> <message>
<source>%1 pages copied</source> <source>%1 pages copied</source>
<translation type="unfinished"> <translation>%1 pagine copiate
<numerusform>%1 pagine copiate
</numerusform>
</translation> </translation>
</message> </message>
</context> </context>
@ -1248,23 +1244,23 @@
<name>UBExportCFF</name> <name>UBExportCFF</name>
<message> <message>
<source>Export to IWB</source> <source>Export to IWB</source>
<translation type="unfinished"></translation> <translation>Esporta come IWB</translation>
</message> </message>
<message> <message>
<source>Export as IWB File</source> <source>Export as IWB File</source>
<translation type="unfinished"></translation> <translation>Esporta come file IWB</translation>
</message> </message>
<message> <message>
<source>Exporting document...</source> <source>Exporting document...</source>
<translation type="unfinished">Esportazione documento in corso...</translation> <translation>Esportazione documento in corso...</translation>
</message> </message>
<message> <message>
<source>Export successful.</source> <source>Export successful.</source>
<translation type="unfinished"></translation> <translation>Esportazione conclusa con successo.</translation>
</message> </message>
<message> <message>
<source>Export failed.</source> <source>Export failed.</source>
<translation type="unfinished">Esportazione fallita.</translation> <translation>Esportazione fallita.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1367,61 +1363,61 @@
<name>UBFeatureProperties</name> <name>UBFeatureProperties</name>
<message> <message>
<source>Add to page</source> <source>Add to page</source>
<translation type="unfinished">Aggiungi alla pagina</translation> <translation>Aggiungi alla pagina</translation>
</message> </message>
<message> <message>
<source>Set as background</source> <source>Set as background</source>
<translation type="unfinished">Imposta come sfondo</translation> <translation>Imposta come sfondo</translation>
</message> </message>
<message> <message>
<source>Add to library</source> <source>Add to library</source>
<translation type="unfinished">Aggiungi alla libreria</translation> <translation>Aggiungi alla Biblioteca</translation>
</message> </message>
<message> <message>
<source>Object informations</source> <source>Object informations</source>
<translation type="unfinished">Informazioni sull&apos;oggetto</translation> <translation>Informazioni sull&apos;oggetto</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBFeaturesActionBar</name> <name>UBFeaturesActionBar</name>
<message> <message>
<source>Add to favorites</source> <source>Add to favorites</source>
<translation type="unfinished">Aggiungi ai preferiti</translation> <translation>Aggiungi ai preferiti</translation>
</message> </message>
<message> <message>
<source>Share</source> <source>Share</source>
<translation type="unfinished">Condividi</translation> <translation>Condividi</translation>
</message> </message>
<message> <message>
<source>Search</source> <source>Search</source>
<translation type="unfinished"></translation> <translation>Cerca</translation>
</message> </message>
<message> <message>
<source>Delete</source> <source>Delete</source>
<translation type="unfinished">Cancella</translation> <translation>Cancella</translation>
</message> </message>
<message> <message>
<source>Back to folder</source> <source>Back to folder</source>
<translation type="unfinished">Torna alla cartella</translation> <translation>Torna alla cartella</translation>
</message> </message>
<message> <message>
<source>Remove from favorites</source> <source>Remove from favorites</source>
<translation type="unfinished">Rimuovi dai preferiti</translation> <translation>Rimuovi dai preferiti</translation>
</message> </message>
<message> <message>
<source>Create new folder</source> <source>Create new folder</source>
<translation type="unfinished">Crea nuova cartella</translation> <translation>Crea nuova cartella</translation>
</message> </message>
<message> <message>
<source>Rescan file system</source> <source>Rescan file system</source>
<translation type="unfinished"></translation> <translation>Ripeti la scansione del file system</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBFeaturesController</name> <name>UBFeaturesController</name>
<message> <message>
<source>ImportedImage</source> <source>ImportedImage</source>
<translation type="unfinished">Immagine importata</translation> <translation>Immagine importata</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1612,7 +1608,7 @@
</message> </message>
<message> <message>
<source>Add to library</source> <source>Add to library</source>
<translation>Aggiungi alla libreria</translation> <translation>Aggiungi alla Biblioteca</translation>
</message> </message>
<message> <message>
<source>Object informations</source> <source>Object informations</source>
@ -1623,7 +1619,7 @@
<name>UBLibraryController</name> <name>UBLibraryController</name>
<message> <message>
<source>Added 1 Image to Library</source> <source>Added 1 Image to Library</source>
<translation>Aggiungi un&apos;immagine alla libreria</translation> <translation>Aggiungi un&apos;immagine alla Biblioteca</translation>
</message> </message>
<message> <message>
<source>Audios</source> <source>Audios</source>
@ -1771,23 +1767,23 @@ Vuoi ignorare gli errori per questo host?</translation>
<name>UBPlatformUtils</name> <name>UBPlatformUtils</name>
<message> <message>
<source>English</source> <source>English</source>
<translation type="unfinished"></translation> <translation>Inglese</translation>
</message> </message>
<message> <message>
<source>Russian</source> <source>Russian</source>
<translation type="unfinished"></translation> <translation>Russo</translation>
</message> </message>
<message> <message>
<source>German</source> <source>German</source>
<translation type="unfinished"></translation> <translation>Tedesco</translation>
</message> </message>
<message> <message>
<source>French</source> <source>French</source>
<translation type="unfinished"></translation> <translation>Francese</translation>
</message> </message>
<message> <message>
<source>Swiss French</source> <source>Swiss French</source>
<translation type="unfinished"></translation> <translation>Franco Svizzero</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1917,33 +1913,34 @@ Vuoi ignorare gli errori per questo host?</translation>
<name>UBTGActionWidget</name> <name>UBTGActionWidget</name>
<message> <message>
<source>Teacher</source> <source>Teacher</source>
<translation type="unfinished"></translation> <translation>Docente</translation>
</message> </message>
<message> <message>
<source>Student</source> <source>Student</source>
<translation type="unfinished"></translation> <translation>Studente</translation>
</message> </message>
<message> <message>
<source>Type task here ...</source> <source>Type task here ...</source>
<translation type="unfinished"></translation> <translation>Digita qui l&apos;attività ...</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTGMediaWidget</name> <name>UBTGMediaWidget</name>
<message> <message>
<source>drop media here ...</source> <source>drop media here ...</source>
<translation type="unfinished"></translation> <translation>Trascina qui una
risorsa multimediale ...</translation>
</message> </message>
<message> <message>
<source>Type title here...</source> <source>Type title here...</source>
<translation type="unfinished"></translation> <translation>Digita qui il titolo ...</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTGUrlWidget</name> <name>UBTGUrlWidget</name>
<message> <message>
<source>Insert link title here...</source> <source>Insert link title here...</source>
<translation type="unfinished"></translation> <translation>Inserisci qui il titolo del link...</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1957,131 +1954,133 @@ Vuoi ignorare gli errori per questo host?</translation>
<name>UBTeacherGuideEditionWidget</name> <name>UBTeacherGuideEditionWidget</name>
<message> <message>
<source>Type title here ...</source> <source>Type title here ...</source>
<translation type="unfinished"></translation> <translation>Digita qui il titolo ...</translation>
</message> </message>
<message> <message>
<source>Type comment here ...</source> <source>Type comment here ...</source>
<translation type="unfinished"></translation> <translation>Digita qui un commento ...</translation>
</message> </message>
<message> <message>
<source>Add an action</source> <source>Add an action</source>
<translation type="unfinished"></translation> <translation>Aggiungi una attività</translation>
</message> </message>
<message> <message>
<source>Add a media</source> <source>Add a media</source>
<translation type="unfinished"></translation> <translation>Aggiungi una risorsa multimediale</translation>
</message> </message>
<message> <message>
<source>Add a link</source> <source>Add a link</source>
<translation type="unfinished"></translation> <translation>Aggiungi un link</translation>
</message> </message>
<message> <message>
<source>Page: %0</source> <source>Page: %0</source>
<translation type="unfinished"></translation> <translation>Pagina: %0</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTeacherGuidePageZeroWidget</name> <name>UBTeacherGuidePageZeroWidget</name>
<message> <message>
<source>Type session title here ...</source> <source>Type session title here ...</source>
<translation type="unfinished"></translation> <translation>Digita qui il titolo della sessione ...</translation>
</message> </message>
<message> <message>
<source>Author(s)</source> <source>Author(s)</source>
<translation type="unfinished"></translation> <translation>Autore(i)</translation>
</message> </message>
<message> <message>
<source>Type authors here ...</source> <source>Type authors here ...</source>
<translation type="unfinished"></translation> <translation>Digita qui gli autori ...</translation>
</message> </message>
<message> <message>
<source>Objective(s)</source> <source>Objective(s)</source>
<translation type="unfinished"></translation> <translation>Obiettivo(i)</translation>
</message> </message>
<message> <message>
<source>Type objectives here...</source> <source>Type objectives here...</source>
<translation type="unfinished"></translation> <translation>Digita qui gli obiettivi...</translation>
</message> </message>
<message> <message>
<source>Resource indexing</source> <source>Resource indexing</source>
<translation type="unfinished"></translation> <translation>Indicizzazione della risorsa</translation>
</message> </message>
<message> <message>
<source>Keywords:</source> <source>Keywords:</source>
<translation type="unfinished"></translation> <translation>Parole chiavi:</translation>
</message> </message>
<message> <message>
<source>Type keywords here ...</source> <source>Type keywords here ...</source>
<translation type="unfinished"></translation> <translation>Digita qui le parole chiavi ...</translation>
</message> </message>
<message> <message>
<source>Level:</source> <source>Level:</source>
<translation type="unfinished"></translation> <translation>Livello:</translation>
</message> </message>
<message> <message>
<source>Subjects:</source> <source>Subjects:</source>
<translation type="unfinished"></translation> <translation>Soggetto:</translation>
</message> </message>
<message> <message>
<source>Type:</source> <source>Type:</source>
<translation type="unfinished"></translation> <translation>Tipo:</translation>
</message> </message>
<message> <message>
<source>Licence</source> <source>Licence</source>
<translation type="unfinished"></translation> <translation>Licenza</translation>
</message> </message>
<message> <message>
<source>Attribution CC BY</source> <source>Attribution CC BY</source>
<translation type="unfinished"></translation> <translation>Attribuzione CC BY</translation>
</message> </message>
<message> <message>
<source>Attribution-NoDerivs CC BY-ND</source> <source>Attribution-NoDerivs CC BY-ND</source>
<translation type="unfinished"></translation> <translation>Attribuzione - Non opere derivate CC BY-ND</translation>
</message> </message>
<message> <message>
<source>Attribution-ShareAlike CC BY-SA</source> <source>Attribution-ShareAlike CC BY-SA</source>
<translation type="unfinished"></translation> <translation>Attribuzione - Condividi allo stesso modo CC BY-SA</translation>
</message> </message>
<message> <message>
<source>Attribution-NonCommercial CC BY-NC</source> <source>Attribution-NonCommercial CC BY-NC</source>
<translation type="unfinished"></translation> <translation>Attribuzione - Non Commerciale CC BY-NC</translation>
</message> </message>
<message> <message>
<source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source> <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
<translation type="unfinished"></translation> <translation>Attribuzione - Non opere derivate, Non commerciale CC BY-NC-ND</translation>
</message> </message>
<message> <message>
<source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source> <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
<translation type="unfinished"></translation> <translation>Attribuzione - Non commerciale, Condividi allo stesso modo CC BY-NC-SA</translation>
</message> </message>
<message> <message>
<source>Public domain</source> <source>Public domain</source>
<translation type="unfinished"></translation> <translation>Pubblico dominio</translation>
</message> </message>
<message> <message>
<source>Copyright</source> <source>Copyright</source>
<translation type="unfinished"></translation> <translation>Copyright</translation>
</message> </message>
<message> <message>
<source>Created the: <source>Created the:
</source> </source>
<translation type="unfinished"></translation> <translation>Creato il:
</translation>
</message> </message>
<message> <message>
<source>Updated the: <source>Updated the:
</source> </source>
<translation type="unfinished"></translation> <translation>Aggiornato il:
</translation>
</message> </message>
<message> <message>
<source>Title page</source> <source>Title page</source>
<translation type="unfinished"></translation> <translation>Titolo pagina</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTeacherGuidePresentationWidget</name> <name>UBTeacherGuidePresentationWidget</name>
<message> <message>
<source>Page: %0</source> <source>Page: %0</source>
<translation type="unfinished"></translation> <translation>Pagina: %0</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2662,13 +2661,13 @@ p, li { white-space: pre-wrap; }
<source>Preferences</source> <source>Preferences</source>
<translation>Preferenze</translation> <translation>Preferenze</translation>
</message> </message>
<message utf8="true"> <message encoding="UTF-8">
<source>version : </source> <source>version : </source>
<translation>versione: ...</translation> <translation>versione: ...</translation>
</message> </message>
<message> <message>
<source>Default Settings</source> <source>Default Settings</source>
<translation>Settaggio predefinito</translation> <translation>Impostazioni predefinite</translation>
</message> </message>
<message> <message>
<source>Close</source> <source>Close</source>
@ -2770,7 +2769,7 @@ p, li { white-space: pre-wrap; }
<source>Network</source> <source>Network</source>
<translation>Rete</translation> <translation>Rete</translation>
</message> </message>
<message utf8="true"> <message encoding="UTF-8">
<source>Open-Sankoré</source> <source>Open-Sankoré</source>
<translation>Open-Sankoré</translation> <translation>Open-Sankoré</translation>
</message> </message>
@ -2810,7 +2809,7 @@ p, li { white-space: pre-wrap; }
<source>Pass:</source> <source>Pass:</source>
<translation>Password:</translation> <translation>Password:</translation>
</message> </message>
<message utf8="true"> <message encoding="UTF-8">
<source>Planète Sankoré ID</source> <source>Planète Sankoré ID</source>
<translation>ID Planete Sankoré</translation> <translation>ID Planete Sankoré</translation>
</message> </message>
@ -3261,7 +3260,7 @@ DAMAGES.
END OF TERMS AND CONDITIONS END OF TERMS AND CONDITIONS
</source> </source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
@ -3272,7 +3271,14 @@ p, li { white-space: pre-wrap; }
&lt;tr&gt; &lt;tr&gt;
&lt;td style=&quot;border: none;&quot;&gt; &lt;td style=&quot;border: none;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;The licences are in English to respect the official and legal approved translation.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;The licences are in English to respect the official and legal approved translation.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Ubuntu&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
&lt;tr&gt;
&lt;td style=&quot;border: none;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Le licenze sono in Inglese per rispettare le traduzioni ufficiali e legalmente approvate.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
@ -3283,13 +3289,13 @@ p, li { white-space: pre-wrap; }
&lt;tr&gt; &lt;tr&gt;
&lt;td style=&quot;border: none;&quot;&gt; &lt;td style=&quot;border: none;&quot;&gt;
&lt;p align=&quot;justify&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt;Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler&lt;/span&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; This software is provided &apos;as-is&apos;, 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.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 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:&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 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.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 3. This notice may not be removed or altered from any source distribution.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source> &lt;p align=&quot;justify&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt;Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler&lt;/span&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; This software is provided &apos;as-is&apos;, 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.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 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:&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 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.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 3. This notice may not be removed or altered from any source distribution.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Credits</source> <source>Credits</source>
<translation type="unfinished"></translation> <translation>Crediti</translation>
</message> </message>
<message utf8="true"> <message encoding="UTF-8">
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
@ -3299,9 +3305,17 @@ p, li { white-space: pre-wrap; }
&lt;td style=&quot;border: none;&quot;&gt; &lt;td style=&quot;border: none;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d&apos;Intérêt Public pour l&apos;Education Numérique en Afrique (GIP ENA)&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;Vous pouvez consulter et charger le code source du logiciel sur &lt;/span&gt;&lt;a href=&quot;https://github.com/Sankore&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;https://github.com/Sankore&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;br /&gt;Open-Sankoré est distribué dans l&apos;espoir qu&apos;il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D&apos;ADAPTATION A UN OBJET PARTICULIER.&lt;br /&gt;Veuillez consulter la licence Lesser GNU General Public Licence située dans l&apos;onglet Licences ou consulter le site &lt;/span&gt;&lt;a href=&quot;http://www.gnu.org/licenses/&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;http://www.gnu.org/licenses/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;.&lt;br /&gt;&lt;br /&gt;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 &lt;/span&gt;&lt;a href=&quot;https://github.com/Sankore&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;https://github.com/Sankore&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d&apos;Intérêt Public pour l&apos;Education Numérique en Afrique (GIP ENA)&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;Vous pouvez consulter et charger le code source du logiciel sur &lt;/span&gt;&lt;a href=&quot;https://github.com/Sankore&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;https://github.com/Sankore&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;br /&gt;Open-Sankoré est distribué dans l&apos;espoir qu&apos;il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D&apos;ADAPTATION A UN OBJET PARTICULIER.&lt;br /&gt;Veuillez consulter la licence Lesser GNU General Public Licence située dans l&apos;onglet Licences ou consulter le site &lt;/span&gt;&lt;a href=&quot;http://www.gnu.org/licenses/&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;http://www.gnu.org/licenses/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;.&lt;br /&gt;&lt;br /&gt;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 &lt;/span&gt;&lt;a href=&quot;https://github.com/Sankore&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;https://github.com/Sankore&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Contact : &lt;br /&gt;Groupement d&apos;Intérêt Public pour l&apos;Education Numérique en Afrique (GIP ENA)&lt;br /&gt;Délégation Interministérielle à l&apos;Education Numérique en Afrique&lt;br /&gt;20 Avenue Ségur Paris 75007&lt;br /&gt;Téléphone : 01 43 17 68 08&lt;br /&gt;email: &lt;/span&gt;&lt;a href=&quot;mailto:contact@sankore.org&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;contact@sankore.org&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Contact : &lt;br /&gt;Groupement d&apos;Intérêt Public pour l&apos;Education Numérique en Afrique (GIP ENA)&lt;br /&gt;Délégation Interministérielle à l&apos;Education Numérique en Afrique&lt;br /&gt;20 Avenue Ségur Paris 75007&lt;br /&gt;Téléphone : 01 43 17 68 08&lt;br /&gt;email: &lt;/span&gt;&lt;a href=&quot;mailto:contact@sankore.org&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;contact@sankore.org&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Ubuntu&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
&lt;tr&gt;
&lt;td style=&quot;border: none;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d&apos;Intérêt Public pour l&apos;Education Numérique en Afrique (GIP ENA)&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;Vous pouvez consulter et charger le code source du logiciel sur &lt;/span&gt;&lt;a href=&quot;https://github.com/Sankore&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;https://github.com/Sankore&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;br /&gt;Open-Sankoré est distribué dans l&apos;espoir qu&apos;il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D&apos;ADAPTATION A UN OBJET PARTICULIER.&lt;br /&gt;Veuillez consulter la licence Lesser GNU General Public Licence située dans l&apos;onglet Licences ou consulter le site &lt;/span&gt;&lt;a href=&quot;http://www.gnu.org/licenses/&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;http://www.gnu.org/licenses/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;.&lt;br /&gt;&lt;br /&gt;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 &lt;/span&gt;&lt;a href=&quot;https://github.com/Sankore&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;https://github.com/Sankore&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Contact : &lt;br /&gt;Groupement d&apos;Intérêt Public pour l&apos;Education Numérique en Afrique (GIP ENA)&lt;br /&gt;Délégation Interministérielle à l&apos;Education Numérique en Afrique&lt;br /&gt;20 Avenue Ségur Paris 75007&lt;br /&gt;Téléphone : 01 43 17 68 08&lt;br /&gt;email: &lt;/span&gt;&lt;a href=&quot;mailto:contact@sankore.org&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;contact@sankore.org&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message utf8="true"> <message encoding="UTF-8">
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; }
@ -3344,7 +3358,48 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; © Henri Rogelet &amp;lt;h.rogelet@free.fr&amp;gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; © Henri Rogelet &amp;lt;h.rogelet@free.fr&amp;gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Autorisation pour un usage non commercial&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Autorisation pour un usage non commercial&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : http://pointecole.free.fr/polices.html&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : http://pointecole.free.fr/polices.html&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Ubuntu&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Crédits police scolaire Open-Sankoré : &lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;La police Andika Basic dispose d&apos;une licence Open Font License &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; © Sil international&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&amp;amp;id=andika&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Licence OFL (traduction française non officielle) http://fontforge.sourceforge.net/OFL-Unofficial-fr.html&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Les polices Ecolier suivantes sont l&apos;oeuvre de Jean-Marie Douteau et disposent d&apos;une licence OFL : &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- Ecolier Court &lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- Ecolier Ligne Court&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; © Jean-Marie Douteau (douteau.ecolier@sfr.fr)&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Les polices Ecolier suivantes sont l&apos;oeuvre de Jean-Marie Douteau et disposent d&apos;une licence Creative Commons BY NC ND :&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- Ecolier lignes pointillés&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- Écolier pointillés&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- Écolier CP&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- Écolier CP pointillés&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; © Jean-Marie Douteau (douteau.ecolier@sfr.fr)&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : http://douteau.ecolier.perso.sfr.fr/page_ecolier.htm&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Les polices Cursive sont l&apos;oeuvre d&apos;Antoine Fetet (antoine.fetet@laposte.net) à partir d&apos;une police proposée par Jean-Claude Gineau&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : http://lps13.free.fr/contenu/construire/Cursive_standard.zip et http://fr.fontriver.com/font/gino_school_script/&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;L&apos;auteur en autorise l&apos;utilisation dans le cadre du logiciel open-Sankoré pour un usage non commercial&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Les polices Script (Ecole et CaseEcole) sont l&apos;oeuvre d&apos;Henri Rogelet&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : http://pointecole.free.fr/polices/SCRIPTCO.zip&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : http://pointecole.free.fr/polices/SCRIPTCA.zip&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; © Henri Rogelet &amp;lt;h.rogelet@free.fr&amp;gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Autorisation pour un usage non commercial&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : http://pointecole.free.fr/polices.html&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;La police phonétique, Alphonet est l&apos;oeuvre d&apos;Henri Rogelet&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : http://pointecole.free.fr/polices/ALPHONET.zip&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; © Henri Rogelet &amp;lt;h.rogelet@free.fr&amp;gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Autorisation pour un usage non commercial&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : http://pointecole.free.fr/polices.html&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
</context> </context>
<context> <context>

@ -801,27 +801,27 @@
</message> </message>
<message> <message>
<source>Group Items</source> <source>Group Items</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Group items</source> <source>Group items</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Play</source> <source>Play</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Interact with items</source> <source>Interact with items</source>
<translation type="unfinished"></translation> <translation>使</translation>
</message> </message>
<message> <message>
<source>Erase Background</source> <source>Erase Background</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Remove the backgound</source> <source>Remove the backgound</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
</context> </context>
<context> <context>
@ -951,7 +951,7 @@
</message> </message>
<message> <message>
<source>CapturedImage</source> <source>CapturedImage</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
</context> </context>
<context> <context>
@ -1134,7 +1134,7 @@
</message> </message>
<message> <message>
<source>Title page</source> <source>Title page</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
</context> </context>
<context> <context>
@ -1180,7 +1180,7 @@
</message> </message>
<message> <message>
<source>Title page</source> <source>Title page</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
</context> </context>
<context> <context>
@ -1246,23 +1246,23 @@
<name>UBExportCFF</name> <name>UBExportCFF</name>
<message> <message>
<source>Export to IWB</source> <source>Export to IWB</source>
<translation type="unfinished"></translation> <translation>IWBへエクスポート</translation>
</message> </message>
<message> <message>
<source>Export as IWB File</source> <source>Export as IWB File</source>
<translation type="unfinished"></translation> <translation>IWB </translation>
</message> </message>
<message> <message>
<source>Exporting document...</source> <source>Exporting document...</source>
<translation type="unfinished">... </translation> <translation>... </translation>
</message> </message>
<message> <message>
<source>Export successful.</source> <source>Export successful.</source>
<translation type="unfinished"></translation> <translation>. </translation>
</message> </message>
<message> <message>
<source>Export failed.</source> <source>Export failed.</source>
<translation type="unfinished"></translation> <translation>. </translation>
</message> </message>
</context> </context>
<context> <context>
@ -1365,61 +1365,61 @@
<name>UBFeatureProperties</name> <name>UBFeatureProperties</name>
<message> <message>
<source>Add to page</source> <source>Add to page</source>
<translation type="unfinished"> </translation> <translation> </translation>
</message> </message>
<message> <message>
<source>Set as background</source> <source>Set as background</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Add to library</source> <source>Add to library</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Object informations</source> <source>Object informations</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBFeaturesActionBar</name> <name>UBFeaturesActionBar</name>
<message> <message>
<source>Add to favorites</source> <source>Add to favorites</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Share</source> <source>Share</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Search</source> <source>Search</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Delete</source> <source>Delete</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Back to folder</source> <source>Back to folder</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Remove from favorites</source> <source>Remove from favorites</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Create new folder</source> <source>Create new folder</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Rescan file system</source> <source>Rescan file system</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBFeaturesController</name> <name>UBFeaturesController</name>
<message> <message>
<source>ImportedImage</source> <source>ImportedImage</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
</context> </context>
<context> <context>
@ -1770,23 +1770,23 @@ Do you want to ignore these errors for this host?</source>
<name>UBPlatformUtils</name> <name>UBPlatformUtils</name>
<message> <message>
<source>English</source> <source>English</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Russian</source> <source>Russian</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>German</source> <source>German</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>French</source> <source>French</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Swiss French</source> <source>Swiss French</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
</context> </context>
<context> <context>
@ -1916,33 +1916,33 @@ Do you want to ignore these errors for this host?</source>
<name>UBTGActionWidget</name> <name>UBTGActionWidget</name>
<message> <message>
<source>Teacher</source> <source>Teacher</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Student</source> <source>Student</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Type task here ...</source> <source>Type task here ...</source>
<translation type="unfinished"></translation> <translation>...</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTGMediaWidget</name> <name>UBTGMediaWidget</name>
<message> <message>
<source>drop media here ...</source> <source>drop media here ...</source>
<translation type="unfinished"></translation> <translation>...</translation>
</message> </message>
<message> <message>
<source>Type title here...</source> <source>Type title here...</source>
<translation type="unfinished"></translation> <translation>...</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTGUrlWidget</name> <name>UBTGUrlWidget</name>
<message> <message>
<source>Insert link title here...</source> <source>Insert link title here...</source>
<translation type="unfinished"></translation> <translation>...</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1956,131 +1956,131 @@ Do you want to ignore these errors for this host?</source>
<name>UBTeacherGuideEditionWidget</name> <name>UBTeacherGuideEditionWidget</name>
<message> <message>
<source>Type title here ...</source> <source>Type title here ...</source>
<translation type="unfinished"></translation> <translation>...</translation>
</message> </message>
<message> <message>
<source>Type comment here ...</source> <source>Type comment here ...</source>
<translation type="unfinished"></translation> <translation>...</translation>
</message> </message>
<message> <message>
<source>Add an action</source> <source>Add an action</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Add a media</source> <source>Add a media</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Add a link</source> <source>Add a link</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Page: %0</source> <source>Page: %0</source>
<translation type="unfinished"></translation> <translation>%0</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTeacherGuidePageZeroWidget</name> <name>UBTeacherGuidePageZeroWidget</name>
<message> <message>
<source>Type session title here ...</source> <source>Type session title here ...</source>
<translation type="unfinished"></translation> <translation>...</translation>
</message> </message>
<message> <message>
<source>Author(s)</source> <source>Author(s)</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Type authors here ...</source> <source>Type authors here ...</source>
<translation type="unfinished"></translation> <translation>...</translation>
</message> </message>
<message> <message>
<source>Objective(s)</source> <source>Objective(s)</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Type objectives here...</source> <source>Type objectives here...</source>
<translation type="unfinished"></translation> <translation>...</translation>
</message> </message>
<message> <message>
<source>Resource indexing</source> <source>Resource indexing</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Keywords:</source> <source>Keywords:</source>
<translation type="unfinished"></translation> <translation>:</translation>
</message> </message>
<message> <message>
<source>Type keywords here ...</source> <source>Type keywords here ...</source>
<translation type="unfinished"></translation> <translation>...</translation>
</message> </message>
<message> <message>
<source>Level:</source> <source>Level:</source>
<translation type="unfinished"></translation> <translation>:</translation>
</message> </message>
<message> <message>
<source>Subjects:</source> <source>Subjects:</source>
<translation type="unfinished"></translation> <translation>:</translation>
</message> </message>
<message> <message>
<source>Type:</source> <source>Type:</source>
<translation type="unfinished"></translation> <translation>:</translation>
</message> </message>
<message> <message>
<source>Licence</source> <source>Licence</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Attribution CC BY</source> <source>Attribution CC BY</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Attribution-NoDerivs CC BY-ND</source> <source>Attribution-NoDerivs CC BY-ND</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Attribution-ShareAlike CC BY-SA</source> <source>Attribution-ShareAlike CC BY-SA</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Attribution-NonCommercial CC BY-NC</source> <source>Attribution-NonCommercial CC BY-NC</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source> <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source> <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Public domain</source> <source>Public domain</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Copyright</source> <source>Copyright</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Created the: <source>Created the:
</source> </source>
<translation type="unfinished"></translation> <translation>:</translation>
</message> </message>
<message> <message>
<source>Updated the: <source>Updated the:
</source> </source>
<translation type="unfinished"></translation> <translation>:</translation>
</message> </message>
<message> <message>
<source>Title page</source> <source>Title page</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTeacherGuidePresentationWidget</name> <name>UBTeacherGuidePresentationWidget</name>
<message> <message>
<source>Page: %0</source> <source>Page: %0</source>
<translation type="unfinished"></translation> <translation>%0</translation>
</message> </message>
</context> </context>
<context> <context>
@ -3256,7 +3256,7 @@ DAMAGES.
END OF TERMS AND CONDITIONS END OF TERMS AND CONDITIONS
</source> </source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
@ -3267,7 +3267,7 @@ p, li { white-space: pre-wrap; }
&lt;tr&gt; &lt;tr&gt;
&lt;td style=&quot;border: none;&quot;&gt; &lt;td style=&quot;border: none;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;The licences are in English to respect the official and legal approved translation.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;The licences are in English to respect the official and legal approved translation.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
@ -3278,11 +3278,11 @@ p, li { white-space: pre-wrap; }
&lt;tr&gt; &lt;tr&gt;
&lt;td style=&quot;border: none;&quot;&gt; &lt;td style=&quot;border: none;&quot;&gt;
&lt;p align=&quot;justify&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt;Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler&lt;/span&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; This software is provided &apos;as-is&apos;, 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.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 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:&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 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.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 3. This notice may not be removed or altered from any source distribution.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source> &lt;p align=&quot;justify&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt;Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler&lt;/span&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; This software is provided &apos;as-is&apos;, 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.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 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:&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 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.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 3. This notice may not be removed or altered from any source distribution.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Credits</source> <source>Credits</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message utf8="true"> <message utf8="true">
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
@ -3294,7 +3294,7 @@ p, li { white-space: pre-wrap; }
&lt;td style=&quot;border: none;&quot;&gt; &lt;td style=&quot;border: none;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d&apos;Intérêt Public pour l&apos;Education Numérique en Afrique (GIP ENA)&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;Vous pouvez consulter et charger le code source du logiciel sur &lt;/span&gt;&lt;a href=&quot;https://github.com/Sankore&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;https://github.com/Sankore&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;br /&gt;Open-Sankoré est distribué dans l&apos;espoir qu&apos;il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D&apos;ADAPTATION A UN OBJET PARTICULIER.&lt;br /&gt;Veuillez consulter la licence Lesser GNU General Public Licence située dans l&apos;onglet Licences ou consulter le site &lt;/span&gt;&lt;a href=&quot;http://www.gnu.org/licenses/&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;http://www.gnu.org/licenses/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;.&lt;br /&gt;&lt;br /&gt;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 &lt;/span&gt;&lt;a href=&quot;https://github.com/Sankore&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;https://github.com/Sankore&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d&apos;Intérêt Public pour l&apos;Education Numérique en Afrique (GIP ENA)&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;Vous pouvez consulter et charger le code source du logiciel sur &lt;/span&gt;&lt;a href=&quot;https://github.com/Sankore&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;https://github.com/Sankore&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;br /&gt;Open-Sankoré est distribué dans l&apos;espoir qu&apos;il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D&apos;ADAPTATION A UN OBJET PARTICULIER.&lt;br /&gt;Veuillez consulter la licence Lesser GNU General Public Licence située dans l&apos;onglet Licences ou consulter le site &lt;/span&gt;&lt;a href=&quot;http://www.gnu.org/licenses/&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;http://www.gnu.org/licenses/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;.&lt;br /&gt;&lt;br /&gt;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 &lt;/span&gt;&lt;a href=&quot;https://github.com/Sankore&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;https://github.com/Sankore&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Contact : &lt;br /&gt;Groupement d&apos;Intérêt Public pour l&apos;Education Numérique en Afrique (GIP ENA)&lt;br /&gt;Délégation Interministérielle à l&apos;Education Numérique en Afrique&lt;br /&gt;20 Avenue Ségur Paris 75007&lt;br /&gt;Téléphone : 01 43 17 68 08&lt;br /&gt;email: &lt;/span&gt;&lt;a href=&quot;mailto:contact@sankore.org&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;contact@sankore.org&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Contact : &lt;br /&gt;Groupement d&apos;Intérêt Public pour l&apos;Education Numérique en Afrique (GIP ENA)&lt;br /&gt;Délégation Interministérielle à l&apos;Education Numérique en Afrique&lt;br /&gt;20 Avenue Ségur Paris 75007&lt;br /&gt;Téléphone : 01 43 17 68 08&lt;br /&gt;email: &lt;/span&gt;&lt;a href=&quot;mailto:contact@sankore.org&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;contact@sankore.org&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message utf8="true"> <message utf8="true">
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
@ -3339,7 +3339,7 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; © Henri Rogelet &amp;lt;h.rogelet@free.fr&amp;gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; © Henri Rogelet &amp;lt;h.rogelet@free.fr&amp;gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Autorisation pour un usage non commercial&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Autorisation pour un usage non commercial&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : http://pointecole.free.fr/polices.html&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : http://pointecole.free.fr/polices.html&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
</context> </context>
<context> <context>

@ -5,7 +5,7 @@
<name>BlackoutWidget</name> <name>BlackoutWidget</name>
<message> <message>
<source>Click to Return to Application</source> <source>Click to Return to Application</source>
<translation>Klik om terug te keren naar de applicatie</translation> <translation>Klik om terug te keren naar de toepassing</translation>
</message> </message>
</context> </context>
<context> <context>
@ -101,7 +101,7 @@
</message> </message>
<message> <message>
<source>Undo</source> <source>Undo</source>
<translation>annuleren</translation> <translation>ongedaan maken</translation>
</message> </message>
<message> <message>
<source>Ctrl+Z</source> <source>Ctrl+Z</source>
@ -365,7 +365,7 @@
</message> </message>
<message> <message>
<source>Duplicate Selected Content</source> <source>Duplicate Selected Content</source>
<translation>De geselecteerde tekst dupliceren</translation> <translation>De geselecteerde inhoud dupliceren</translation>
</message> </message>
<message> <message>
<source>Delete</source> <source>Delete</source>
@ -801,27 +801,27 @@
</message> </message>
<message> <message>
<source>Group Items</source> <source>Group Items</source>
<translation type="unfinished"></translation> <translation>Groep onderdelen</translation>
</message> </message>
<message> <message>
<source>Group items</source> <source>Group items</source>
<translation type="unfinished"></translation> <translation>groep onderdelen</translation>
</message> </message>
<message> <message>
<source>Play</source> <source>Play</source>
<translation type="unfinished"></translation> <translation>Speel</translation>
</message> </message>
<message> <message>
<source>Interact with items</source> <source>Interact with items</source>
<translation type="unfinished"></translation> <translation>Aan de slag met onderdelen</translation>
</message> </message>
<message> <message>
<source>Erase Background</source> <source>Erase Background</source>
<translation type="unfinished"></translation> <translation>Achtergrond wissen</translation>
</message> </message>
<message> <message>
<source>Remove the backgound</source> <source>Remove the backgound</source>
<translation type="unfinished"></translation> <translation>Achtyergrond verwijderen</translation>
</message> </message>
</context> </context>
<context> <context>
@ -951,7 +951,7 @@
</message> </message>
<message> <message>
<source>CapturedImage</source> <source>CapturedImage</source>
<translation type="unfinished"></translation> <translation>Gegrepen afbeelding</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1135,7 +1135,7 @@
</message> </message>
<message> <message>
<source>Title page</source> <source>Title page</source>
<translation type="unfinished"></translation> <translation>Titel pagina</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1181,7 +1181,7 @@
</message> </message>
<message> <message>
<source>Title page</source> <source>Title page</source>
<translation type="unfinished"></translation> <translation>Titel pagina</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1228,7 +1228,7 @@
<message numerus="yes"> <message numerus="yes">
<source>%1 pages copied</source> <source>%1 pages copied</source>
<translation> <translation>
<numerusform>%1 gekopieerd</numerusform> <numerusform>%1 pagina gekopieerd</numerusform>
<numerusform>%1 pagina&apos;s gekopieerd</numerusform> <numerusform>%1 pagina&apos;s gekopieerd</numerusform>
</translation> </translation>
</message> </message>
@ -1248,23 +1248,23 @@
<name>UBExportCFF</name> <name>UBExportCFF</name>
<message> <message>
<source>Export to IWB</source> <source>Export to IWB</source>
<translation type="unfinished"></translation> <translation>Exporteer naar IWB</translation>
</message> </message>
<message> <message>
<source>Export as IWB File</source> <source>Export as IWB File</source>
<translation type="unfinished"></translation> <translation>Exporteer als IWB bestand</translation>
</message> </message>
<message> <message>
<source>Exporting document...</source> <source>Exporting document...</source>
<translation type="unfinished">Document wordt geëxporteerd...</translation> <translation>Document wordt geëxporteerd...</translation>
</message> </message>
<message> <message>
<source>Export successful.</source> <source>Export successful.</source>
<translation type="unfinished">Export gelukt.</translation> <translation>Export gelukt.</translation>
</message> </message>
<message> <message>
<source>Export failed.</source> <source>Export failed.</source>
<translation type="unfinished"></translation> <translation>Export mislukt.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1367,61 +1367,61 @@
<name>UBFeatureProperties</name> <name>UBFeatureProperties</name>
<message> <message>
<source>Add to page</source> <source>Add to page</source>
<translation type="unfinished">Aan pagina toevoegen</translation> <translation>Aan pagina toevoegen</translation>
</message> </message>
<message> <message>
<source>Set as background</source> <source>Set as background</source>
<translation type="unfinished">Als achtergrond gebruiken</translation> <translation>Als achtergrond gebruiken</translation>
</message> </message>
<message> <message>
<source>Add to library</source> <source>Add to library</source>
<translation type="unfinished">Aan bibliotheek toevoegen</translation> <translation>Aan bibliotheek toevoegen</translation>
</message> </message>
<message> <message>
<source>Object informations</source> <source>Object informations</source>
<translation type="unfinished">Object informatie</translation> <translation>Object informatie</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBFeaturesActionBar</name> <name>UBFeaturesActionBar</name>
<message> <message>
<source>Add to favorites</source> <source>Add to favorites</source>
<translation type="unfinished">Aan favorieten toevoegen</translation> <translation>Aan favorieten toevoegen</translation>
</message> </message>
<message> <message>
<source>Share</source> <source>Share</source>
<translation type="unfinished">Delen</translation> <translation>Delen</translation>
</message> </message>
<message> <message>
<source>Search</source> <source>Search</source>
<translation type="unfinished">Zoeken</translation> <translation>Zoeken</translation>
</message> </message>
<message> <message>
<source>Delete</source> <source>Delete</source>
<translation type="unfinished">Verwijderen</translation> <translation>Verwijderen</translation>
</message> </message>
<message> <message>
<source>Back to folder</source> <source>Back to folder</source>
<translation type="unfinished">Terug naar map</translation> <translation>Terug naar map</translation>
</message> </message>
<message> <message>
<source>Remove from favorites</source> <source>Remove from favorites</source>
<translation type="unfinished">Uit favorieten verwijderen</translation> <translation>Uit favorieten verwijderen</translation>
</message> </message>
<message> <message>
<source>Create new folder</source> <source>Create new folder</source>
<translation type="unfinished">Nieuwe map maken</translation> <translation>Nieuwe map maken</translation>
</message> </message>
<message> <message>
<source>Rescan file system</source> <source>Rescan file system</source>
<translation type="unfinished"></translation> <translation>Bestand systeem opnieuw scannen</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBFeaturesController</name> <name>UBFeaturesController</name>
<message> <message>
<source>ImportedImage</source> <source>ImportedImage</source>
<translation type="unfinished">Geïmporteerd beeld</translation> <translation>Geïmporteerd beeld</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1765,23 +1765,23 @@ Do you want to ignore these errors for this host?</source>
<name>UBPlatformUtils</name> <name>UBPlatformUtils</name>
<message> <message>
<source>English</source> <source>English</source>
<translation type="unfinished"></translation> <translation>Engels</translation>
</message> </message>
<message> <message>
<source>Russian</source> <source>Russian</source>
<translation type="unfinished"></translation> <translation>Russisch</translation>
</message> </message>
<message> <message>
<source>German</source> <source>German</source>
<translation type="unfinished"></translation> <translation>Duits</translation>
</message> </message>
<message> <message>
<source>French</source> <source>French</source>
<translation type="unfinished"></translation> <translation>Frans</translation>
</message> </message>
<message> <message>
<source>Swiss French</source> <source>Swiss French</source>
<translation type="unfinished"></translation> <translation>Zwitsers Frans</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1911,33 +1911,33 @@ Do you want to ignore these errors for this host?</source>
<name>UBTGActionWidget</name> <name>UBTGActionWidget</name>
<message> <message>
<source>Teacher</source> <source>Teacher</source>
<translation type="unfinished"></translation> <translation>Leerkracht</translation>
</message> </message>
<message> <message>
<source>Student</source> <source>Student</source>
<translation type="unfinished"></translation> <translation>Student</translation>
</message> </message>
<message> <message>
<source>Type task here ...</source> <source>Type task here ...</source>
<translation type="unfinished"></translation> <translation>Typ opdracht hier ...</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTGMediaWidget</name> <name>UBTGMediaWidget</name>
<message> <message>
<source>drop media here ...</source> <source>drop media here ...</source>
<translation type="unfinished"></translation> <translation>Plaats media hier ...</translation>
</message> </message>
<message> <message>
<source>Type title here...</source> <source>Type title here...</source>
<translation type="unfinished"></translation> <translation>Typ titel hier ...</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTGUrlWidget</name> <name>UBTGUrlWidget</name>
<message> <message>
<source>Insert link title here...</source> <source>Insert link title here...</source>
<translation type="unfinished"></translation> <translation>Voeg titel van de link hier toe ...</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1951,131 +1951,131 @@ Do you want to ignore these errors for this host?</source>
<name>UBTeacherGuideEditionWidget</name> <name>UBTeacherGuideEditionWidget</name>
<message> <message>
<source>Type title here ...</source> <source>Type title here ...</source>
<translation type="unfinished"></translation> <translation>Typ de titel hier ...</translation>
</message> </message>
<message> <message>
<source>Type comment here ...</source> <source>Type comment here ...</source>
<translation type="unfinished"></translation> <translation>Typ de commentaar hier ...</translation>
</message> </message>
<message> <message>
<source>Add an action</source> <source>Add an action</source>
<translation type="unfinished"></translation> <translation>Voeg de werkvorm toe</translation>
</message> </message>
<message> <message>
<source>Add a media</source> <source>Add a media</source>
<translation type="unfinished"></translation> <translation>Voeg de media toe</translation>
</message> </message>
<message> <message>
<source>Add a link</source> <source>Add a link</source>
<translation type="unfinished"></translation> <translation>Voeg een link toe</translation>
</message> </message>
<message> <message>
<source>Page: %0</source> <source>Page: %0</source>
<translation type="unfinished"></translation> <translation>Pagina: %0</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTeacherGuidePageZeroWidget</name> <name>UBTeacherGuidePageZeroWidget</name>
<message> <message>
<source>Type session title here ...</source> <source>Type session title here ...</source>
<translation type="unfinished"></translation> <translation>Typ de lesfase hier ...</translation>
</message> </message>
<message> <message>
<source>Author(s)</source> <source>Author(s)</source>
<translation type="unfinished"></translation> <translation>Auteur</translation>
</message> </message>
<message> <message>
<source>Type authors here ...</source> <source>Type authors here ...</source>
<translation type="unfinished"></translation> <translation>Typ de auteurs hier ...</translation>
</message> </message>
<message> <message>
<source>Objective(s)</source> <source>Objective(s)</source>
<translation type="unfinished"></translation> <translation>Doelstelling(en)</translation>
</message> </message>
<message> <message>
<source>Type objectives here...</source> <source>Type objectives here...</source>
<translation type="unfinished"></translation> <translation>Typ de doelstellingen hier ...</translation>
</message> </message>
<message> <message>
<source>Resource indexing</source> <source>Resource indexing</source>
<translation type="unfinished"></translation> <translation>Oplijsting bronmateriaal</translation>
</message> </message>
<message> <message>
<source>Keywords:</source> <source>Keywords:</source>
<translation type="unfinished"></translation> <translation>Sleutelwoorden:</translation>
</message> </message>
<message> <message>
<source>Type keywords here ...</source> <source>Type keywords here ...</source>
<translation type="unfinished"></translation> <translation>Typ hier de sleutelwoorden ...</translation>
</message> </message>
<message> <message>
<source>Level:</source> <source>Level:</source>
<translation type="unfinished"></translation> <translation>Niveau:</translation>
</message> </message>
<message> <message>
<source>Subjects:</source> <source>Subjects:</source>
<translation type="unfinished"></translation> <translation>Onderwerpen:</translation>
</message> </message>
<message> <message>
<source>Type:</source> <source>Type:</source>
<translation type="unfinished"></translation> <translation>Type:</translation>
</message> </message>
<message> <message>
<source>Licence</source> <source>Licence</source>
<translation type="unfinished"></translation> <translation>Licentie</translation>
</message> </message>
<message> <message>
<source>Attribution CC BY</source> <source>Attribution CC BY</source>
<translation type="unfinished"></translation> <translation>Naamsvermelding CC BY</translation>
</message> </message>
<message> <message>
<source>Attribution-NoDerivs CC BY-ND</source> <source>Attribution-NoDerivs CC BY-ND</source>
<translation type="unfinished"></translation> <translation>Naamsvermelding-GeenAfgeleideWerken CC BY-ND</translation>
</message> </message>
<message> <message>
<source>Attribution-ShareAlike CC BY-SA</source> <source>Attribution-ShareAlike CC BY-SA</source>
<translation type="unfinished"></translation> <translation>Naamsvermelding-GelijkDelen CC BY-SA</translation>
</message> </message>
<message> <message>
<source>Attribution-NonCommercial CC BY-NC</source> <source>Attribution-NonCommercial CC BY-NC</source>
<translation type="unfinished"></translation> <translation>Naamsvermelding-NietCommercieel CC BY-NC</translation>
</message> </message>
<message> <message>
<source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source> <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
<translation type="unfinished"></translation> <translation>Naamsvermelding-NietCommercieel-GeenAfgeleideWerken CC BY-NC-ND</translation>
</message> </message>
<message> <message>
<source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source> <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
<translation type="unfinished"></translation> <translation>Naamsvermelding-NietCommercieel-GelijkDelen CC BY-NC-SA</translation>
</message> </message>
<message> <message>
<source>Public domain</source> <source>Public domain</source>
<translation type="unfinished"></translation> <translation>Publiek domein</translation>
</message> </message>
<message> <message>
<source>Copyright</source> <source>Copyright</source>
<translation type="unfinished"></translation> <translation>Copyright</translation>
</message> </message>
<message> <message>
<source>Created the: <source>Created the:
</source> </source>
<translation type="unfinished"></translation> <translation>Aangemaakt op:</translation>
</message> </message>
<message> <message>
<source>Updated the: <source>Updated the:
</source> </source>
<translation type="unfinished"></translation> <translation>Bijgewerkt op:</translation>
</message> </message>
<message> <message>
<source>Title page</source> <source>Title page</source>
<translation type="unfinished"></translation> <translation>Titel pagina</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTeacherGuidePresentationWidget</name> <name>UBTeacherGuidePresentationWidget</name>
<message> <message>
<source>Page: %0</source> <source>Page: %0</source>
<translation type="unfinished"></translation> <translation>Pagina: %0</translation>
</message> </message>
</context> </context>
<context> <context>
@ -3280,7 +3280,7 @@ p, li { white-space: pre-wrap; }
</message> </message>
<message> <message>
<source>Credits</source> <source>Credits</source>
<translation type="unfinished"></translation> <translation>Credits</translation>
</message> </message>
<message utf8="true"> <message utf8="true">
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;

@ -281,7 +281,8 @@
</message> </message>
<message> <message>
<source>Show Desktop</source> <source>Show Desktop</source>
<translation>Mostrar o ambiente de trabalho</translation> <translatorcomment>&quot;Mostrar Ambiente de Trabalho&quot; (muito longo) - Mostrar a mesa</translatorcomment>
<translation>Mostrar mesa</translation>
</message> </message>
<message> <message>
<source>Show Computer Desktop</source> <source>Show Computer Desktop</source>
@ -801,27 +802,28 @@
</message> </message>
<message> <message>
<source>Group Items</source> <source>Group Items</source>
<translation type="unfinished"></translation> <translation>Agrupar itens</translation>
</message> </message>
<message> <message>
<source>Group items</source> <source>Group items</source>
<translation type="unfinished"></translation> <translation>Agrupar itens</translation>
</message> </message>
<message> <message>
<source>Play</source> <source>Play</source>
<translation type="unfinished"></translation> <translatorcomment>Começar(?)</translatorcomment>
<translation>Iniciar</translation>
</message> </message>
<message> <message>
<source>Interact with items</source> <source>Interact with items</source>
<translation type="unfinished"></translation> <translation>Interagir com itens</translation>
</message> </message>
<message> <message>
<source>Erase Background</source> <source>Erase Background</source>
<translation type="unfinished"></translation> <translation>Apagar o fundo</translation>
</message> </message>
<message> <message>
<source>Remove the backgound</source> <source>Remove the backgound</source>
<translation type="unfinished"></translation> <translation>Remover o fundo</translation>
</message> </message>
</context> </context>
<context> <context>
@ -953,7 +955,7 @@
</message> </message>
<message> <message>
<source>CapturedImage</source> <source>CapturedImage</source>
<translation type="unfinished"></translation> <translation>Imagem capturada</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1137,7 +1139,7 @@
</message> </message>
<message> <message>
<source>Title page</source> <source>Title page</source>
<translation type="unfinished"></translation> <translation>Página de Título</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1183,7 +1185,7 @@
</message> </message>
<message> <message>
<source>Title page</source> <source>Title page</source>
<translation type="unfinished"></translation> <translation>Página de Título</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1250,23 +1252,23 @@
<name>UBExportCFF</name> <name>UBExportCFF</name>
<message> <message>
<source>Export to IWB</source> <source>Export to IWB</source>
<translation type="unfinished"></translation> <translation>Exportar para IWB</translation>
</message> </message>
<message> <message>
<source>Export as IWB File</source> <source>Export as IWB File</source>
<translation type="unfinished"></translation> <translation>Exportar como ficheiro IWB</translation>
</message> </message>
<message> <message>
<source>Exporting document...</source> <source>Exporting document...</source>
<translation type="unfinished">A exportar documento...</translation> <translation>A exportar documento...</translation>
</message> </message>
<message> <message>
<source>Export successful.</source> <source>Export successful.</source>
<translation type="unfinished">Exportação bem sucedida.</translation> <translation>Exportação bem sucedida.</translation>
</message> </message>
<message> <message>
<source>Export failed.</source> <source>Export failed.</source>
<translation type="unfinished"></translation> <translation>Falha na Exportação.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1369,61 +1371,62 @@
<name>UBFeatureProperties</name> <name>UBFeatureProperties</name>
<message> <message>
<source>Add to page</source> <source>Add to page</source>
<translation type="unfinished">Adicionar à página</translation> <translation>Adicionar à página</translation>
</message> </message>
<message> <message>
<source>Set as background</source> <source>Set as background</source>
<translation type="unfinished">Definir como fundo</translation> <translation>Definir como fundo</translation>
</message> </message>
<message> <message>
<source>Add to library</source> <source>Add to library</source>
<translation type="unfinished">Adicionar à biblioteca</translation> <translation>Adicionar à biblioteca</translation>
</message> </message>
<message> <message>
<source>Object informations</source> <source>Object informations</source>
<translation type="unfinished">Informações do Objecto</translation> <translation>Informações do Objecto</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBFeaturesActionBar</name> <name>UBFeaturesActionBar</name>
<message> <message>
<source>Add to favorites</source> <source>Add to favorites</source>
<translation type="unfinished">Adicionar aos favoritos</translation> <translation>Adicionar aos favoritos</translation>
</message> </message>
<message> <message>
<source>Share</source> <source>Share</source>
<translation type="unfinished">Partilhar</translation> <translation>Partilhar</translation>
</message> </message>
<message> <message>
<source>Search</source> <source>Search</source>
<translation type="unfinished"></translation> <translation>Procurar</translation>
</message> </message>
<message> <message>
<source>Delete</source> <source>Delete</source>
<translation type="unfinished">Apagar</translation> <translation>Apagar</translation>
</message> </message>
<message> <message>
<source>Back to folder</source> <source>Back to folder</source>
<translation type="unfinished">Voltar à pasta</translation> <translation>Voltar à pasta</translation>
</message> </message>
<message> <message>
<source>Remove from favorites</source> <source>Remove from favorites</source>
<translation type="unfinished">Remover dos favoritos</translation> <translation>Remover dos favoritos</translation>
</message> </message>
<message> <message>
<source>Create new folder</source> <source>Create new folder</source>
<translation type="unfinished">Criar uma nova pasta</translation> <translation>Criar uma nova pasta</translation>
</message> </message>
<message> <message>
<source>Rescan file system</source> <source>Rescan file system</source>
<translation type="unfinished"></translation> <translatorcomment>&quot;Procurar ficheiro de Sistema&quot;(?)</translatorcomment>
<translation>Voltar a procurar ficheiro de Sistema</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBFeaturesController</name> <name>UBFeaturesController</name>
<message> <message>
<source>ImportedImage</source> <source>ImportedImage</source>
<translation type="unfinished">Imagem Importada</translation> <translation>Imagem Importada</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1919,164 +1922,167 @@ Quer ignorar estes erros, deste servidor?</translation>
<name>UBTGActionWidget</name> <name>UBTGActionWidget</name>
<message> <message>
<source>Teacher</source> <source>Teacher</source>
<translation type="unfinished"></translation> <translation>Professor</translation>
</message> </message>
<message> <message>
<source>Student</source> <source>Student</source>
<translation type="unfinished"></translation> <translation>Aluno</translation>
</message> </message>
<message> <message>
<source>Type task here ...</source> <source>Type task here ...</source>
<translation type="unfinished"></translation> <translation>Colocar aqui a tarefa ...</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTGMediaWidget</name> <name>UBTGMediaWidget</name>
<message> <message>
<source>drop media here ...</source> <source>drop media here ...</source>
<translation type="unfinished"></translation> <translation>Largar o ficheiro media aqui ...</translation>
</message> </message>
<message> <message>
<source>Type title here...</source> <source>Type title here...</source>
<translation type="unfinished"></translation> <translation>Colocar aqui o tíitulo...</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTGUrlWidget</name> <name>UBTGUrlWidget</name>
<message> <message>
<source>Insert link title here...</source> <source>Insert link title here...</source>
<translation type="unfinished"></translation> <translation>Colocar aqui o título do link...</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTeacherGuideEditionWidget</name> <name>UBTeacherGuideEditionWidget</name>
<message> <message>
<source>Type title here ...</source> <source>Type title here ...</source>
<translation type="unfinished"></translation> <translation>Colocar o título aqui...</translation>
</message> </message>
<message> <message>
<source>Type comment here ...</source> <source>Type comment here ...</source>
<translation type="unfinished"></translation> <translation>Colocar aqui o comentário ...</translation>
</message> </message>
<message> <message>
<source>Add an action</source> <source>Add an action</source>
<translation type="unfinished"></translation> <translation>Adicionar uma ação</translation>
</message> </message>
<message> <message>
<source>Add a media</source> <source>Add a media</source>
<translation type="unfinished"></translation> <translatorcomment>&quot;Adicionar ficheiro multimédia&quot;</translatorcomment>
<translation>Adicionar multimédia</translation>
</message> </message>
<message> <message>
<source>Add a link</source> <source>Add a link</source>
<translation type="unfinished"></translation> <translation>Adicionar um link</translation>
</message> </message>
<message> <message>
<source>Page: %0</source> <source>Page: %0</source>
<translation type="unfinished"></translation> <translation>Página: %0</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTeacherGuidePageZeroWidget</name> <name>UBTeacherGuidePageZeroWidget</name>
<message> <message>
<source>Type session title here ...</source> <source>Type session title here ...</source>
<translation type="unfinished"></translation> <translation>Colocar aqui tipo de sessão ...</translation>
</message> </message>
<message> <message>
<source>Author(s)</source> <source>Author(s)</source>
<translation type="unfinished"></translation> <translation>Autor(es)</translation>
</message> </message>
<message> <message>
<source>Type authors here ...</source> <source>Type authors here ...</source>
<translation type="unfinished"></translation> <translation>Colocar aqui os autores ...</translation>
</message> </message>
<message> <message>
<source>Objective(s)</source> <source>Objective(s)</source>
<translation type="unfinished"></translation> <translation>Objetivo(s)</translation>
</message> </message>
<message> <message>
<source>Type objectives here...</source> <source>Type objectives here...</source>
<translation type="unfinished"></translation> <translation>Colocar aqui o tipo de objetivo...</translation>
</message> </message>
<message> <message>
<source>Resource indexing</source> <source>Resource indexing</source>
<translation type="unfinished"></translation> <translatorcomment>&quot;Índice de recursos&quot;?</translatorcomment>
<translation>Indexar recursos</translation>
</message> </message>
<message> <message>
<source>Keywords:</source> <source>Keywords:</source>
<translation type="unfinished"></translation> <translation>Palavra(s) Chave:</translation>
</message> </message>
<message> <message>
<source>Type keywords here ...</source> <source>Type keywords here ...</source>
<translation type="unfinished"></translation> <translation>Colocar a(s) palavra(s) chave aqui ...</translation>
</message> </message>
<message> <message>
<source>Level:</source> <source>Level:</source>
<translation type="unfinished"></translation> <translation>Nível:</translation>
</message> </message>
<message> <message>
<source>Subjects:</source> <source>Subjects:</source>
<translation type="unfinished"></translation> <translation>Assunto:</translation>
</message> </message>
<message> <message>
<source>Type:</source> <source>Type:</source>
<translation type="unfinished"></translation> <translation>Tipo:</translation>
</message> </message>
<message> <message>
<source>Licence</source> <source>Licence</source>
<translation type="unfinished"></translation> <translation>Licença</translation>
</message> </message>
<message> <message>
<source>Attribution CC BY</source> <source>Attribution CC BY</source>
<translation type="unfinished"></translation> <translation>Atribuição CC BY</translation>
</message> </message>
<message> <message>
<source>Attribution-NoDerivs CC BY-ND</source> <source>Attribution-NoDerivs CC BY-ND</source>
<translation type="unfinished"></translation> <translation>Atribuição-SemDerivados CC BY-ND</translation>
</message> </message>
<message> <message>
<source>Attribution-ShareAlike CC BY-SA</source> <source>Attribution-ShareAlike CC BY-SA</source>
<translation type="unfinished"></translation> <translation>Atribuição-CompartilhaIgual CC BY-SA</translation>
</message> </message>
<message> <message>
<source>Attribution-NonCommercial CC BY-NC</source> <source>Attribution-NonCommercial CC BY-NC</source>
<translation type="unfinished"></translation> <translation>Atribuição - NãoComercial CC BY-NC</translation>
</message> </message>
<message> <message>
<source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source> <source>Attribution-NonCommercial-NoDerivs CC BY-NC-ND</source>
<translation type="unfinished"></translation> <translation>Atribuição-NãoComercial-SemDerivados CC BY-NC-ND</translation>
</message> </message>
<message> <message>
<source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source> <source>Attribution-NonCommercial-ShareAlike CC BY-NC-SA</source>
<translation type="unfinished"></translation> <translation>Atribuição-NãoComercial-CompartilhaIgual CC BY-NC-SA</translation>
</message> </message>
<message> <message>
<source>Public domain</source> <source>Public domain</source>
<translation type="unfinished"></translation> <translation>Domínio Público</translation>
</message> </message>
<message> <message>
<source>Copyright</source> <source>Copyright</source>
<translation type="unfinished"></translation> <translation>Copyright</translation>
</message> </message>
<message> <message>
<source>Created the: <source>Created the:
</source> </source>
<translation type="unfinished"></translation> <translation>Criou:</translation>
</message> </message>
<message> <message>
<source>Updated the: <source>Updated the:
</source> </source>
<translation type="unfinished"></translation> <translation>Actualizou:</translation>
</message> </message>
<message> <message>
<source>Title page</source> <source>Title page</source>
<translation type="unfinished"></translation> <translatorcomment>Página Inicial</translatorcomment>
<translation>Página de Título</translation>
</message> </message>
</context> </context>
<context> <context>
<name>UBTeacherGuidePresentationWidget</name> <name>UBTeacherGuidePresentationWidget</name>
<message> <message>
<source>Page: %0</source> <source>Page: %0</source>
<translation type="unfinished"></translation> <translation>Página: %0</translation>
</message> </message>
</context> </context>
<context> <context>
@ -3262,7 +3268,7 @@ DAMAGES.
END OF TERMS AND CONDITIONS END OF TERMS AND CONDITIONS
</source> </source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
@ -3273,7 +3279,14 @@ p, li { white-space: pre-wrap; }
&lt;tr&gt; &lt;tr&gt;
&lt;td style=&quot;border: none;&quot;&gt; &lt;td style=&quot;border: none;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;The licences are in English to respect the official and legal approved translation.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;The licences are in English to respect the official and legal approved translation.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Ubuntu&apos;; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;table border=&quot;0&quot; style=&quot;-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;&quot;&gt;
&lt;tr&gt;
&lt;td style=&quot;border: none;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;As licenças estãao em Inglês para respeitar a tradução oficial e legalmente aceite.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message> </message>
<message> <message>
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
@ -3284,11 +3297,11 @@ p, li { white-space: pre-wrap; }
&lt;tr&gt; &lt;tr&gt;
&lt;td style=&quot;border: none;&quot;&gt; &lt;td style=&quot;border: none;&quot;&gt;
&lt;p align=&quot;justify&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt;Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler&lt;/span&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; This software is provided &apos;as-is&apos;, 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.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 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:&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 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.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 3. This notice may not be removed or altered from any source distribution.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source> &lt;p align=&quot;justify&quot; style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt;Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler&lt;/span&gt;&lt;span style=&quot; font-size:12pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; This software is provided &apos;as-is&apos;, 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.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 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:&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 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.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot; font-size:9pt; color:#1a1a1a;&quot;&gt; 3. This notice may not be removed or altered from any source distribution.&lt;/span&gt;&lt;span style=&quot; font-size:9pt;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Credits</source> <source>Credits</source>
<translation type="unfinished"></translation> <translation>Créditos</translation>
</message> </message>
<message utf8="true"> <message utf8="true">
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
@ -3300,7 +3313,7 @@ p, li { white-space: pre-wrap; }
&lt;td style=&quot;border: none;&quot;&gt; &lt;td style=&quot;border: none;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d&apos;Intérêt Public pour l&apos;Education Numérique en Afrique (GIP ENA)&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;Vous pouvez consulter et charger le code source du logiciel sur &lt;/span&gt;&lt;a href=&quot;https://github.com/Sankore&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;https://github.com/Sankore&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;br /&gt;Open-Sankoré est distribué dans l&apos;espoir qu&apos;il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D&apos;ADAPTATION A UN OBJET PARTICULIER.&lt;br /&gt;Veuillez consulter la licence Lesser GNU General Public Licence située dans l&apos;onglet Licences ou consulter le site &lt;/span&gt;&lt;a href=&quot;http://www.gnu.org/licenses/&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;http://www.gnu.org/licenses/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;.&lt;br /&gt;&lt;br /&gt;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 &lt;/span&gt;&lt;a href=&quot;https://github.com/Sankore&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;https://github.com/Sankore&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Open-Sankoré version 1.4 , Copyright (C) 2010-2012 Groupement d&apos;Intérêt Public pour l&apos;Education Numérique en Afrique (GIP ENA)&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;Vous pouvez consulter et charger le code source du logiciel sur &lt;/span&gt;&lt;a href=&quot;https://github.com/Sankore&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;https://github.com/Sankore&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;br /&gt;Open-Sankoré est distribué dans l&apos;espoir qu&apos;il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D&apos;ADAPTATION A UN OBJET PARTICULIER.&lt;br /&gt;Veuillez consulter la licence Lesser GNU General Public Licence située dans l&apos;onglet Licences ou consulter le site &lt;/span&gt;&lt;a href=&quot;http://www.gnu.org/licenses/&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;http://www.gnu.org/licenses/&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;.&lt;br /&gt;&lt;br /&gt;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 &lt;/span&gt;&lt;a href=&quot;https://github.com/Sankore&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;&amp;lt;https://github.com/Sankore&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Contact : &lt;br /&gt;Groupement d&apos;Intérêt Public pour l&apos;Education Numérique en Afrique (GIP ENA)&lt;br /&gt;Délégation Interministérielle à l&apos;Education Numérique en Afrique&lt;br /&gt;20 Avenue Ségur Paris 75007&lt;br /&gt;Téléphone : 01 43 17 68 08&lt;br /&gt;email: &lt;/span&gt;&lt;a href=&quot;mailto:contact@sankore.org&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;contact@sankore.org&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Contact : &lt;br /&gt;Groupement d&apos;Intérêt Public pour l&apos;Education Numérique en Afrique (GIP ENA)&lt;br /&gt;Délégation Interministérielle à l&apos;Education Numérique en Afrique&lt;br /&gt;20 Avenue Ségur Paris 75007&lt;br /&gt;Téléphone : 01 43 17 68 08&lt;br /&gt;email: &lt;/span&gt;&lt;a href=&quot;mailto:contact@sankore.org&quot;&gt;&lt;span style=&quot; font-size:11pt; text-decoration: underline; color:#0000ff;&quot;&gt;contact@sankore.org&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
<message utf8="true"> <message utf8="true">
<source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
@ -3345,7 +3358,7 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; © Henri Rogelet &amp;lt;h.rogelet@free.fr&amp;gt;&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; © Henri Rogelet &amp;lt;h.rogelet@free.fr&amp;gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Autorisation pour un usage non commercial&lt;/p&gt; &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Autorisation pour un usage non commercial&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : http://pointecole.free.fr/polices.html&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> &lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Source : http://pointecole.free.fr/polices.html&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation> <translation></translation>
</message> </message>
</context> </context>
<context> <context>

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 447 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

@ -6,6 +6,63 @@ html, body {
color: #666666; color: #666666;
} }
::-webkit-scrollbar {
width: 14px;
}
::-webkit-scrollbar-thumb {
/*border-radius: 10px; */
background-color:lightgray;
border: 2px solid gray;
}
::-webkit-scrollbar-button:vertical:start{
border-top-right-radius: 10px;
border-top-left-radius: 10px;
background-color:lightgray;
background-image: url(images/trgUp.png);
background-size: 8px auto;
background-position: center;
background-repeat: no-repeat;
border: 2px solid gray;
}
::-webkit-scrollbar-button:vertical:end{
border-bottom-right-radius: 10px;
border-bottom-left-radius: 10px;
background-color:lightgray;
background-image: url(images/trgDown.png);
background-size: 8px auto;
background-position: center;
background-repeat: no-repeat;
border: 2px solid gray;
}
::-webkit-scrollbar-button:horizontal:start{
width: 14px;
border-bottom-left-radius: 10px;
border-top-left-radius: 10px;
background-color:lightgray;
background-image: url(images/trgLeft.png);
background-size: 8px auto;
background-position: center;
background-repeat: no-repeat;
border: 2px solid gray;
}
::-webkit-scrollbar-button:horizontal:end{
width: 14px;
border-bottom-right-radius: 10px;
border-top-right-radius: 10px;
background-color:lightgray;
background-image: url(images/trgRight.png);
background-size: 8px auto;
background-position: center;
background-repeat: no-repeat;
border: 2px solid gray;
}
#ubwidget { #ubwidget {
position: absolute; position: absolute;
top: 0; top: 0;

@ -13,257 +13,294 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
function log(object) { function log(object) {
console.log(object); console.log(object);
} }
function initAfterI18nMessagesLoaded(reload, templates, callbacks) { 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,{ var parameters = Object.create(Parameters,{
container: { container: {
value: ubwidget value: ubwidget
}, },
delegate: { delegate: {
value: window.sankore || Object.create(ParametersDelegate) value: window.sankore || Object.create(ParametersDelegate)
} }
}); });
var app = Object.create(App, { var app = Object.create(App, {
container: { container: {
value: ubwidget value: ubwidget
}, },
parameters: { parameters: {
value: parameters value: parameters
}, },
reload: { reload: {
value: reload value: reload
} }
}); });
app.init(); app.init();
app.onEdit = false; app.onEdit = false;
if(templates.toolbar) { if(templates.toolbar) {
$("#toolbar").html(Mustache.render(templates.toolbar, window)); $("#toolbar").html(Mustache.render(templates.toolbar, window));
} }
if(templates.parameters) { if(templates.parameters) {
$("#parameters").html(Mustache.render(templates.parameters, window)); $("#parameters").html(Mustache.render(templates.parameters, window));
} }
if(callbacks.onTemplatesLoaded && typeof callbacks.onTemplatesLoaded === 'function') { if(callbacks.onTemplatesLoaded && typeof callbacks.onTemplatesLoaded === 'function') {
callbacks.onTemplatesLoaded(app); callbacks.onTemplatesLoaded(app);
} }
log("Update setting views with stored parameters"); log("Update setting views with stored parameters");
$("#parameters (input|select)[role=parameter]").each(function(i, input) { $("#parameters (input|select)[role=parameter]").each(function(i, input) {
(function(input){ (function(input){
var key = input.name; var key = input.name;
var type = input.type; var type = input.type;
var isRadioOrcheckbox = (type !== undefined && (type === "checkbox" || type === "radio")); var isRadioOrcheckbox = (type !== undefined && (type === "checkbox" || type === "radio"));
var stored = parameters.value(key); var stored = parameters.value(key);
if(isRadioOrcheckbox) if(isRadioOrcheckbox)
$(input).attr("checked", (typeof stored === "string" ? stored === "true" : stored)); $(input).attr("checked", (typeof stored === "string" ? stored === "true" : stored));
else else
$(input).val(stored); $(input).val(stored);
$(input).change(function(){ $(input).change(function(){
var val = (isRadioOrcheckbox ? $(this).is(":checked") : $(this).val()); var val = (isRadioOrcheckbox ? $(this).is(":checked") : $(this).val());
parameters.value(key, val); parameters.value(key, val);
}); });
})(input); })(input);
}); });
log("Toobar Initialisation"); log("Toobar Initialisation");
$("button[role=edit]").click(function(){ $("button[role=edit]").click(function(){
app.onEdit = true; app.onEdit = true;
$(document.body).addClass("onEdit"); if(window.sankore)
if(callbacks.onEdit && typeof callbacks.onEdit === 'function') { window.sankore.enableDropOnWidget(app.onEdit);
callbacks.onEdit(app); $(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"); $("button[role=view]").click(function(){
if(callbacks.onView && typeof callbacks.onView === 'function') { app.onEdit = false;
callbacks.onView(app); if(window.sankore)
} window.sankore.enableDropOnWidget(app.onEdit);
}); $(document.body).removeClass("onEdit");
$("button[role=reload]").click(function(){ if(callbacks.onView && typeof callbacks.onView === 'function') {
app.reload(); callbacks.onView(app);
}); }
$("button[role=help]").click(function(){ });
$("body").toggleClass("showHelp"); $("button[role=reload]").click(function(){
}); app.reload();
});
$("button[role=help]").click(function(){
$("body").toggleClass("showHelp");
});
$("select[name='themes']").change(function() { $("select[name='themes']").change(function() {
$("body").get(0).className = $("body")[0].className.replace(/\btheme-[^\s]*\b/gi, ''); $("body").get(0).className = $("body")[0].className.replace(/\btheme-[^\s]*\b/gi, '');
$("body").addClass("theme-"+$(this).val()); $("body").addClass("theme-"+$(this).val());
}); });
$("body").addClass("theme-"+$("select[name='themes']").val()); $("body").addClass("theme-"+$("select[name='themes']").val());
} }
function init(reload, templates, callbacks){ function init(reload, templates, callbacks){
var locale = window.sankore ? sankore.locale() : ""; var locale = window.sankore ? sankore.locale() : "";
$.i18n.properties({ $.i18n.properties({
name: 'Messages', name: 'Messages',
path: 'i18n/', path: 'i18n/',
language: locale, language: locale,
callback: function(){ callback: function(){
initAfterI18nMessagesLoaded(reload, templates, callbacks); initAfterI18nMessagesLoaded(reload, templates, callbacks);
} }
}); });
} }
var Parameters = (function(){ var Parameters = (function(){
var self = Object.create({}, { var self = Object.create({}, {
container: { container: {
value: null value: null
}, },
delegate: { delegate: {
value: null value: null
}, },
value: { value: {
value: function(key, value) { value: function(key, value) {
if(value === undefined) { if(value === undefined) {
var val = this.delegate.preference(key); var val = this.delegate.preference(key);
log("Retrieve parameter value ["+val+"] as type ["+(typeof val)+"] for key : ["+key+"]"); log("Retrieve parameter value ["+val+"] as type ["+(typeof val)+"] for key : ["+key+"]");
return (val !== undefined && (typeof val !== "string" || val)) ? val : $("#ubwidget").data(key); return (val !== undefined && (typeof val !== "string" || val)) ? val : $("#ubwidget").data(key);
} }
else { else {
log("Set parameter value ["+value+"] for key : ["+key+"]"); log("Set parameter value ["+value+"] for key : ["+key+"]");
this.delegate.setPreference(key, value); this.delegate.setPreference(key, value);
this.container.trigger("preferenceChange", {key: key, value: value}); this.container.trigger("preferenceChange", {
} key: key,
} value: value
} });
}); }
return self; }
}
});
return self;
})(); })();
var ParametersDelegate = (function(){ var ParametersDelegate = (function(){
var self = Object.create({}, { var self = Object.create({}, {
preference: { preference: {
value: function(key) { value: function(key) {
return this[key]; return this[key];
} }
}, },
setPreference: { setPreference: {
value: function(key, value) { value: function(key, value) {
this[key] = value; this[key] = value;
} }
} }
}); });
return self; return self;
})(); })();
var App = (function() { var App = (function() {
var self = Object.create({}, { var self = Object.create({}, {
container: { container: {
value: null value: null
}, },
parameters: { parameters: {
value: null value: null
}, },
init: { init: {
value: function() { value: function() {
var that = this; var that = this;
this.container.bind("preferenceChange", function(evt, parameter) { this.container.bind("preferenceChange", function(evt, parameter) {
that.reload(parameter); that.reload(parameter);
}); });
this.reload(); this.reload();
} }
},
reload: {
value: function(parameter) {
if(parameter === undefined)
log("Reload");
else
log("Update");
}
}, },
reload: { utils: {
value: function(parameter) { value: Object.create({}, {
if(parameter === undefined) shuffle: {
log("Reload"); value: function(array) {
else var unpickedSize = array.length;
log("Update"); while(unpickedSize > 0) {
} var n = Math.floor(Math.random()*unpickedSize);
}, var temp = array[unpickedSize-1];
utils: { array[unpickedSize-1] = array[n];
value: Object.create({}, { array[n] = temp;
shuffle: { unpickedSize--;
value: function(array) { }
var unpickedSize = array.length; }
while(unpickedSize > 0) { },
var n = Math.floor(Math.random()*unpickedSize); guid: {
var temp = array[unpickedSize-1]; value: function() {
array[unpickedSize-1] = array[n]; var S4 = function() {
array[n] = temp; return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
unpickedSize--; };
} return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
} }
}, },
guid: { droppable: {
value: function() { value: function($e, callback) {
var S4 = function() { $e.bind("dragover", function(){
return (((1+Math.random())*0x10000)|0).toString(16).substring(1); $(this).addClass("hover");
}; return false;
return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4()); });
} $e.bind("dragleave", function(){
}, $(this).removeClass("hover");
droppable: { return false;
value: function($e, callback) { });
$e.bind("dragover", function(){ $e.bind("drop", function(e){
$(this).addClass("hover"); $(this).removeClass("hover");
return false; e = e || window.event;
}); e.preventDefault();
$e.bind("dragleave", function(){ // jQuery wraps the originalEvent, so we try to detect that here...
$(this).removeClass("hover"); e = e.originalEvent || e;
return false;
}); if(window.sankore) {
$e.bind("drop", function(e){ function stringToXML(text){
$(this).removeClass("hover"); if (window.ActiveXObject){
e = e || window.event; var doc=new ActiveXObject('Microsoft.XMLDOM');
e.preventDefault(); doc.async='false';
// jQuery wraps the originalEvent, so we try to detect that here... doc.loadXML(text);
e = e.originalEvent || e; } else {
var parser=new DOMParser();
doc=parser.parseFromString(text,'text/xml');
}
return doc;
}
var file = stringToXML(e.dataTransfer.getData("text/plain"));
var tmp_img = $("<img/>").attr("src", $(file).find("path:eq(0)").text());
var w = 0;
var h = 0;
$(this).append(tmp_img);
setTimeout(function(){
if(tmp_img.height() >= tmp_img.width()){
if(tmp_img.height() > 180){
h = 180;
tmp_img.attr("height",h);
w = tmp_img.width();
} else {
h = tmp_img.height();
w = tmp_img.width();
}
if(window.sankore) { }
function stringToXML(text){ else{
if (window.ActiveXObject){ if(tmp_img.width() > 180){
var doc=new ActiveXObject('Microsoft.XMLDOM'); w = 180;
doc.async='false'; tmp_img.attr("width",w);
doc.loadXML(text); h = tmp_img.height();
} else { } else {
var parser=new DOMParser(); h = tmp_img.height();
doc=parser.parseFromString(text,'text/xml'); w = tmp_img.width();
} }
return doc; }
} callback({
var file = stringToXML(e.dataTransfer.getData("text/plain")); src: $(file).find("path:eq(0)").text(),
callback({ width: w,
src: $(file).find("path:eq(0)").text() height: h
}); });
return false; tmp_img.remove();
} }, 6)
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/). // 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); var files = (e.files || e.dataTransfer.files);
for (var i = 0; i < files.length; i++) { for (var i = 0; i < files.length; i++) {
// Loop through our files with a closure so each of our FileReader's are isolated. // Loop through our files with a closure so each of our FileReader's are isolated.
(function (i) { (function (i) {
if(typeof FileReader !== "undefined") { if(typeof FileReader !== "undefined") {
var reader = new FileReader(); var reader = new FileReader();
reader.onload = function (event) { reader.onload = function (event) {
callback({ callback({
src: event.target.result, src: event.target.result,
title: (files[i].name), title: (files[i].name),
alt: (files[i].name) alt: (files[i].name)
}); });
}; };
reader.readAsDataURL(files[i]); reader.readAsDataURL(files[i]);
} }
})(i); })(i);
} }
return false; return false;
}); });
} }
} }
}) })
} }
}); });
return self; return self;
})(); })();

@ -3,197 +3,200 @@ function onTemplateLoadedCallback() {
} }
function editRow(app, index) { function editRow(app, index) {
var parameters = app.parameters; var parameters = app.parameters;
var row = $("<div/>"); var row = $("<div/>");
row.append("<div class='label'><div>"+fr.njin.i18n.transformation.row.label(index+1)+"</div></div>"); row.append("<div class='label'><div>"+fr.njin.i18n.transformation.row.label(index+1)+"</div></div>");
var cards = $("<div class='cards'/>"); var cards = $("<div class='cards'/>");
row.append(cards); row.append(cards);
var beforecontent = parameters.value("#"+index+"before"); var beforecontent = parameters.value("#"+index+"before");
var aftercontent = parameters.value("#"+index+"after"); var aftercontent = parameters.value("#"+index+"after");
var before = $("<div rel='before'><div class='switch'><label>"+fr.njin.i18n.transformation.label.usePicture+"<input type='checkbox' name='switch'></label></div><div class='card'><div class='text'><div>"+( beforecontent !== undefined ? beforecontent : "" )+"</div></div><div class='picture'><div></div><div class='dropzone'><div>"+fr.njin.i18n.transformation.label.drop+"</div></div></div></div><div class='label'>"+fr.njin.i18n.transformation.label.before+"</div></div>"); var before = $("<div rel='before'><div class='switch'><label>"+fr.njin.i18n.transformation.label.usePicture+"<input type='checkbox' name='switch'></label></div><div class='card'><div class='text'><div>"+( beforecontent !== undefined ? beforecontent : "" )+"</div></div><div class='picture'><div></div><div class='dropzone'><div>"+fr.njin.i18n.transformation.label.drop+"</div></div></div></div><div class='label'>"+fr.njin.i18n.transformation.label.before+"</div></div>");
var after = $("<div rel='after'><div class='switch'><label>"+fr.njin.i18n.transformation.label.usePicture+"<input type='checkbox' name='switch'></label></div><div class='card'><div class='text'><div>"+( aftercontent !== undefined ? aftercontent : "" )+"</div></div><div class='picture'><div></div><div class='dropzone'><div>"+fr.njin.i18n.transformation.label.drop+"</div></div></div></div><div class='label'>"+fr.njin.i18n.transformation.label.after+"</div></div>"); var after = $("<div rel='after'><div class='switch'><label>"+fr.njin.i18n.transformation.label.usePicture+"<input type='checkbox' name='switch'></label></div><div class='card'><div class='text'><div>"+( aftercontent !== undefined ? aftercontent : "" )+"</div></div><div class='picture'><div></div><div class='dropzone'><div>"+fr.njin.i18n.transformation.label.drop+"</div></div></div></div><div class='label'>"+fr.njin.i18n.transformation.label.after+"</div></div>");
makeEditable(app, before, index); makeEditable(app, before, index);
makeEditable(app, after, index); makeEditable(app, after, index);
cards.append(before); cards.append(before);
cards.append(after); cards.append(after);
return row; return row;
} }
function cards(app, index) { function cards(app, index) {
var parameters = app.parameters; var parameters = app.parameters;
var beforecard = $("<div class='part before closed'/>"); var beforecard = $("<div class='part before closed'/>");
var aftercard = $("<div class='part after'/>"); var aftercard = $("<div class='part after'/>");
var beforecontent = parameters.value("#"+index+"before"); var beforecontent = parameters.value("#"+index+"before");
var aftercontent = parameters.value("#"+index+"after"); var aftercontent = parameters.value("#"+index+"after");
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 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 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" var usePicture = parameters.value("#UsePicture"+index+"before") === "true"
|| parameters.value("#UsePicture"+index+"before") == true; || parameters.value("#UsePicture"+index+"before") == true;
if(usePicture) { if(usePicture) {
before.addClass("usePicture"); before.addClass("usePicture");
var f = $.parseJSON(parameters.value("#Picture"+index+"before")); var f = $.parseJSON(parameters.value("#Picture"+index+"before"));
if(f !== null) { if(f !== null) {
var $img = $('<img src="" class="uploadPic" title="" alt="" />').attr(f); var $img = $('<img src="" class="uploadPic" title="" alt="" />').attr(f);
before.find(".picture>div:eq(0)").append($img); before.find(".picture>div:eq(0)").append($img);
} }
} }
usePicture = parameters.value("#UsePicture"+index+"after") === "true" usePicture = parameters.value("#UsePicture"+index+"after") === "true"
|| parameters.value("#UsePicture"+index+"after") == true; || parameters.value("#UsePicture"+index+"after") == true;
if(usePicture) { if(usePicture) {
after.addClass("usePicture"); after.addClass("usePicture");
var f = $.parseJSON(parameters.value("#Picture"+index+"after")); var f = $.parseJSON(parameters.value("#Picture"+index+"after"));
if(f !== null) { if(f !== null) {
var $img = $('<img src="" class="uploadPic" title="" alt="" />').attr(f); var $img = $('<img src="" class="uploadPic" title="" alt="" />').attr(f);
after.find(".picture>div:eq(0)").append($img); after.find(".picture>div:eq(0)").append($img);
} }
} }
beforecard.append(before); beforecard.append(before);
aftercard.append(after); aftercard.append(after);
return [beforecard, aftercard]; return [beforecard, aftercard];
} }
function makeEditable(app, row, index) { function makeEditable(app, row, index) {
var parameters = app.parameters; var parameters = app.parameters;
var editable = row.find(".text>div").eq(0); var editable = row.find(".text>div").eq(0);
var key = index+editable.parent().parent().parent().attr('rel'); var key = index+editable.parent().parent().parent().attr('rel');
editable.get(0).contentEditable = true; editable.get(0).contentEditable = true;
editable.bind('blur keyup paste', function(){ editable.bind('blur keyup paste', function(){
parameters.value("#"+key, $(this).html()); parameters.value("#"+key, $(this).html());
}); });
var checkbox = row.find("input[name='switch']"); var checkbox = row.find("input[name='switch']");
function setSwicth() { function setSwicth() {
var val = parameters.value("#UsePicture"+key) === "true" var val = parameters.value("#UsePicture"+key) === "true"
|| parameters.value("#UsePicture"+key) === true; || parameters.value("#UsePicture"+key) === true;
if(val) { if(val) {
row.addClass("usePicture"); row.addClass("usePicture");
}else { }else {
row.removeClass("usePicture"); row.removeClass("usePicture");
} }
checkbox.attr("checked", val); checkbox.attr("checked", val);
} }
checkbox.change(function() { checkbox.change(function() {
parameters.value("#UsePicture"+key, $(this).is(':checked')); parameters.value("#UsePicture"+key, $(this).is(':checked'));
setSwicth(); setSwicth();
}); });
setSwicth(); setSwicth();
var dropzone = row.find(".dropzone"); var dropzone = row.find(".dropzone");
var pictureHolder = dropzone.parent().find(">div:eq(0)"); var pictureHolder = dropzone.parent().find(">div:eq(0)");
function setPicture() { function setPicture() {
var f = $.parseJSON(parameters.value("#Picture"+key)); var f = $.parseJSON(parameters.value("#Picture"+key));
if(f !== null) { if(f !== null) {
var $img = $('<img src="" class="uploadPic" title="" alt="" />').attr(f); var $img = $('<img src="" class="uploadPic" title="" alt="" />').attr(f);
pictureHolder.empty(); pictureHolder.empty();
pictureHolder.append($img); pictureHolder.append($img);
} }
} }
app.utils.droppable(dropzone, function(f) { app.utils.droppable(dropzone, function(f) {
parameters.value("#Picture"+key, JSON.stringify(f)); parameters.value("#Picture"+key, JSON.stringify(f));
setPicture(); setPicture();
}); });
setPicture(); setPicture();
} }
function reloadApp(app) { function reloadApp(app) {
var number = app.parameters.value("number"); var number = app.parameters.value("number");
var scene = $("#scene"); var scene = $("#scene");
scene.empty(); scene.empty();
if(app.onEdit) { if(app.onEdit) {
var editcards = $("#edit-cards"); var editcards = $("#edit-cards");
editcards.empty(); editcards.empty();
for(var i=0 ; i<number ; i++) { for(var i=0 ; i<number ; i++) {
editcards.append(editRow(app, i)); editcards.append(editRow(app, i));
} }
return; return;
} }
var table = $("<div id='table'/>"); var table = $("<div id='table'/>");
scene.append(table); scene.append(table);
var before = $("<div class='deck before'><div></div></div>"); var before = $("<div class='deck before'><div></div></div>");
var box = $("<div class='box'><div></div></div>"); var box = $("<div class='box'><div></div></div>");
var after = $("<div class='deck after'><div></div></div>"); var after = $("<div class='deck after'><div></div></div>");
if(number === 0) if(number === 0)
before.addClass("empty"); before.addClass("empty");
after.addClass("empty"); after.addClass("empty");
table.append(before); table.append(before);
table.append(box); table.append(box);
table.append(after); table.append(after);
box.find(">div").css("z-index", number+1); box.find(">div").css("z-index", number+1);
var beforeDeck = before.find(">div"); var beforeDeck = before.find(">div");
var afterDeck = after.find(">div"); var afterDeck = after.find(">div");
var beforeLeftPosition = box.find(">div").position().left - beforeDeck.position().left + 10 + 40; //10px de padding dans la box + 40px d'ombre dans l'image var beforeLeftPosition = box.find(">div").position().left - beforeDeck.position().left + 10 + 40; //10px de padding dans la box + 40px d'ombre dans l'image
function makeCard(i, cards) { function makeCard(i, cards) {
beforeDeck.append(cards[0]); beforeDeck.append(cards[0]);
afterDeck.append(cards[1]); afterDeck.append(cards[1]);
cards[1].css("left", -beforeLeftPosition+"px"); cards[1].css("left", -beforeLeftPosition+"px");
cards[1].css("z-index", i); cards[1].css("z-index", i);
cards[0].click(function(e) { cards[0].click(function(e) {
var c = $(this); var c = $(this);
c.removeClass("closed"); c.removeClass("closed");
c.unbind(e); c.unbind(e);
c.animate({ c.animate({
left : beforeLeftPosition left : beforeLeftPosition
}, 1000, function(){ }, 1000, function(){
setTimeout(function(){ setTimeout(function(){
cards[1].animate({ cards[1].animate({
left: 0 left: 0
}, 1000, function(){ }, 1000, function(){
after.removeClass("empty"); after.removeClass("empty");
}); });
}, 1000); }, 1000);
c.remove(); c.remove();
}); });
if(i === 0) { if(i === 0) {
before.addClass("empty"); before.addClass("empty");
} }
}); });
} }
for(var i=number ; i>0 ; i--) { for(var i=number ; i>0 ; i--) {
makeCard(i-1, cards(app, i-1)); makeCard(i-1, cards(app, i-1));
} }
if(window.sankore) if(window.sankore)
window.sankore.enableDropOnWidget(app.onEdit); window.sankore.enableDropOnWidget(app.onEdit);
} }
function reloadCallback(parameter) { function reloadCallback(parameter) {
if(parameter === undefined || parameter.key === "number" ) if(parameter === undefined || parameter.key === "number" )
reloadApp(this); reloadApp(this);
} }
$(document).ready(function(){ $(document).ready(function(){
var callbacks = { var callbacks = {
onTemplatesLoaded: onTemplateLoadedCallback, onTemplatesLoaded: onTemplateLoadedCallback,
onEdit: reloadApp, onEdit: reloadApp,
onView: reloadApp onView: reloadApp
}; };
init(reloadCallback, {toolbar: toolbarTemplate, parameters: parametersTemplate}, callbacks); init(reloadCallback, {
toolbar: toolbarTemplate,
parameters: parametersTemplate
}, callbacks);
}); });

@ -32,6 +32,7 @@
#include "domain/UBGraphicsTextItem.h" #include "domain/UBGraphicsTextItem.h"
#include "domain/UBGraphicsTextItemDelegate.h" #include "domain/UBGraphicsTextItemDelegate.h"
#include "domain/UBGraphicsWidgetItem.h" #include "domain/UBGraphicsWidgetItem.h"
#include "domain/UBGraphicsGroupContainerItem.h"
#include "frameworks/UBFileSystemUtils.h" #include "frameworks/UBFileSystemUtils.h"
@ -128,8 +129,9 @@ bool UBCFFSubsetAdaptor::ConvertCFFFileToUbz(QString &cffSourceFile, UBDocumentP
return result; return result;
} }
UBCFFSubsetAdaptor::UBCFFSubsetReader::UBCFFSubsetReader(UBDocumentProxy *proxy, QFile *content): UBCFFSubsetAdaptor::UBCFFSubsetReader::UBCFFSubsetReader(UBDocumentProxy *proxy, QFile *content)
mProxy(proxy) : mProxy(proxy)
, mGSectionContainer(NULL)
{ {
int errorLine, errorColumn; int errorLine, errorColumn;
QString errorStr; QString errorStr;
@ -168,6 +170,8 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parse()
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseGSection(const QDomElement &element) bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseGSection(const QDomElement &element)
{ {
mGSectionContainer = new UBGraphicsGroupContainerItem();
QDomElement currentSvgElement = element.firstChildElement(); QDomElement currentSvgElement = element.firstChildElement();
while (!currentSvgElement.isNull()) { while (!currentSvgElement.isNull()) {
if (!parseSvgElement(currentSvgElement)) if (!parseSvgElement(currentSvgElement))
@ -176,6 +180,16 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseGSection(const QDomElement &ele
currentSvgElement = currentSvgElement.nextSiblingElement(); currentSvgElement = currentSvgElement.nextSiblingElement();
} }
if (mGSectionContainer->childItems().count())
{
mCurrentScene->addGroup(mGSectionContainer);
}
else
{
delete mGSectionContainer;
mGSectionContainer = NULL;
}
return true; return true;
} }
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgSwitchSection(const QDomElement &element) bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgSwitchSection(const QDomElement &element)
@ -247,6 +261,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgRect(const QDomElement &elem
repositionSvgItem(svgItem, width, height, x1, y1, transform); repositionSvgItem(svgItem, width, height, x1, y1, transform);
hashSceneItem(element, svgItem); hashSceneItem(element, svgItem);
if (mGSectionContainer)
{
addItemToGSection(svgItem);
}
delete generator; delete generator;
return true; return true;
@ -293,6 +312,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgEllipse(const QDomElement &e
repositionSvgItem(svgItem, rx * 2, ry * 2, cx - 2*rx, cy+ry, transform); repositionSvgItem(svgItem, rx * 2, ry * 2, cx - 2*rx, cy+ry, transform);
hashSceneItem(element, svgItem); hashSceneItem(element, svgItem);
if (mGSectionContainer)
{
addItemToGSection(svgItem);
}
delete generator; delete generator;
return true; return true;
@ -375,6 +399,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgPolygon(const QDomElement &e
repositionSvgItem(svgItem, width +strokeWidth, height + strokeWidth, x1 - strokeWidth/2 + transform.m31(), y1 + strokeWidth/2 + transform.m32(), transform); repositionSvgItem(svgItem, width +strokeWidth, height + strokeWidth, x1 - strokeWidth/2 + transform.m31(), y1 + strokeWidth/2 + transform.m32(), transform);
hashSceneItem(element, svgItem); hashSceneItem(element, svgItem);
if (mGSectionContainer)
{
addItemToGSection(svgItem);
}
delete generator; delete generator;
return true; return true;
@ -454,6 +483,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgPolyline(const QDomElement &
repositionSvgItem(svgItem, width +strokeWidth, height + strokeWidth, x1 + transform.m31() - strokeWidth/2, y1 + transform.m32() + strokeWidth/2, transform); repositionSvgItem(svgItem, width +strokeWidth, height + strokeWidth, x1 + transform.m31() - strokeWidth/2, y1 + transform.m32() + strokeWidth/2, transform);
hashSceneItem(element, svgItem); hashSceneItem(element, svgItem);
if (mGSectionContainer)
{
addItemToGSection(svgItem);
}
delete generator; delete generator;
return true; return true;
@ -593,6 +627,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgText(const QDomElement &elem
repositionSvgItem(svgItem, width, height, x + transform.m31(), y + transform.m32(), transform); repositionSvgItem(svgItem, width, height, x + transform.m31(), y + transform.m32(), transform);
hashSceneItem(element, svgItem); hashSceneItem(element, svgItem);
if (mGSectionContainer)
{
addItemToGSection(svgItem);
}
delete generator; delete generator;
return true; return true;
} }
@ -712,6 +751,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgTextarea(const QDomElement &
repositionSvgItem(svgItem, width, height, x + transform.m31(), y + transform.m32(), transform); repositionSvgItem(svgItem, width, height, x + transform.m31(), y + transform.m32(), transform);
hashSceneItem(element, svgItem); hashSceneItem(element, svgItem);
if (mGSectionContainer)
{
addItemToGSection(svgItem);
}
return true; return true;
} }
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgImage(const QDomElement &element) bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgImage(const QDomElement &element)
@ -749,6 +793,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgImage(const QDomElement &ele
repositionSvgItem(pixItem, width, height, x + transform.m31(), y + transform.m32(), transform); repositionSvgItem(pixItem, width, height, x + transform.m31(), y + transform.m32(), transform);
hashSceneItem(element, pixItem); hashSceneItem(element, pixItem);
if (mGSectionContainer)
{
addItemToGSection(pixItem);
}
return true; return true;
} }
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgFlash(const QDomElement &element) bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgFlash(const QDomElement &element)
@ -791,6 +840,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgFlash(const QDomElement &ele
repositionSvgItem(flashItem, width, height, x + transform.m31(), y + transform.m32(), transform); repositionSvgItem(flashItem, width, height, x + transform.m31(), y + transform.m32(), transform);
hashSceneItem(element, flashItem); hashSceneItem(element, flashItem);
if (mGSectionContainer)
{
addItemToGSection(flashItem);
}
return true; return true;
} }
@ -829,6 +883,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgAudio(const QDomElement &ele
repositionSvgItem(audioItem, audioItem->boundingRect().width(), audioItem->boundingRect().height(), x + transform.m31(), y + transform.m32(), transform); repositionSvgItem(audioItem, audioItem->boundingRect().width(), audioItem->boundingRect().height(), x + transform.m31(), y + transform.m32(), transform);
hashSceneItem(element, audioItem); hashSceneItem(element, audioItem);
if (mGSectionContainer)
{
addItemToGSection(audioItem);
}
return true; return true;
} }
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgVideo(const QDomElement &element) bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgVideo(const QDomElement &element)
@ -867,6 +926,11 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgVideo(const QDomElement &ele
repositionSvgItem(videoItem, videoItem->boundingRect().width(), videoItem->boundingRect().height(), x + transform.m31(), y + transform.m32(), transform); repositionSvgItem(videoItem, videoItem->boundingRect().width(), videoItem->boundingRect().height(), x + transform.m31(), y + transform.m32(), transform);
hashSceneItem(element, videoItem); hashSceneItem(element, videoItem);
if (mGSectionContainer)
{
addItemToGSection(videoItem);
}
return true; return true;
} }
@ -877,6 +941,11 @@ void UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgSectionAttr(const QDomElemen
svgSection.attribute(aHeight).toInt()); svgSection.attribute(aHeight).toInt());
} }
void UBCFFSubsetAdaptor::UBCFFSubsetReader::addItemToGSection(QGraphicsItem *item)
{
mGSectionContainer->addToGroup(item);
}
void UBCFFSubsetAdaptor::UBCFFSubsetReader::hashSceneItem(const QDomElement &element, UBGraphicsItem *item) void UBCFFSubsetAdaptor::UBCFFSubsetReader::hashSceneItem(const QDomElement &element, UBGraphicsItem *item)
{ {
// adding element pointer to hash to refer if needed // adding element pointer to hash to refer if needed

@ -35,6 +35,7 @@ class QGraphicsItem;
class QTextBlockFormat; class QTextBlockFormat;
class QTextCharFormat; class QTextCharFormat;
class QTextCursor; class QTextCursor;
class UBGraphicsStrokesGroup;
class UBCFFSubsetAdaptor class UBCFFSubsetAdaptor
@ -66,6 +67,8 @@ private:
QPointF mViewBoxCenter; QPointF mViewBoxCenter;
QSize mSize; QSize mSize;
QPointF mShiftVector; QPointF mShiftVector;
bool mSvgGSectionIsOpened;
UBGraphicsGroupContainerItem *mGSectionContainer;
private: private:
QDomDocument mDOMdoc; QDomDocument mDOMdoc;
@ -73,6 +76,7 @@ private:
QHash<QString, UBGraphicsItem*> persistedItems; QHash<QString, UBGraphicsItem*> persistedItems;
QDir mTmpFlashDir; QDir mTmpFlashDir;
void addItemToGSection(QGraphicsItem *item);
bool hashElements(); bool hashElements();
void addExtentionsToHash(QDomElement *parent, QDomElement *topGroup); void addExtentionsToHash(QDomElement *parent, QDomElement *topGroup);

@ -396,6 +396,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
if (!mScene) if (!mScene)
{ {
mScene = new UBGraphicsScene(mProxy); mScene = new UBGraphicsScene(mProxy);
mScene->setURStackEnable(false);
} }
// introduced in UB 4.2 // introduced in UB 4.2
@ -1013,6 +1014,7 @@ UBGraphicsScene* UBSvgSubsetAdaptor::UBSvgSubsetReader::loadScene()
delete annotationGroup; delete annotationGroup;
} }
mScene->setURStackEnable(true);
return mScene; return mScene;
} }

@ -880,7 +880,7 @@ void UBBoardController::groupButtonClicked()
} }
if (groupAction->text() == UBSettings::settings()->actionGroupText) { //The only way to get information from item, considering using smth else if (groupAction->text() == UBSettings::settings()->actionGroupText) { //The only way to get information from item, considering using smth else
UBGraphicsGroupContainerItem *groupItem = activeScene()->createGroup(selItems); UBGraphicsGroupContainerItem *groupItem = activeScene()->createGroup(selItems);
groupItem->setSelected(true); groupItem->setSelected(true);
UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector); UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
@ -1102,7 +1102,7 @@ UBItem *UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QStri
QUuid uuid = QUuid::createUuid(); QUuid uuid = QUuid::createUuid();
QUrl url = QUrl::fromLocalFile(UBPersistenceManager::persistenceManager() QUrl url = QUrl::fromLocalFile(UBPersistenceManager::persistenceManager()
->addVideoFileToDocument(selectedDocument(), sourceUrl, pData, uuid)); ->addAudioFileToDocument(selectedDocument(), sourceUrl, pData, uuid));
audioMediaItem = mActiveScene->addMedia(url, false, pPos); audioMediaItem = mActiveScene->addMedia(url, false, pPos);

@ -106,8 +106,7 @@ UBBoardView::~UBBoardView () {
delete suspendedMousePressEvent; delete suspendedMousePressEvent;
} }
void void UBBoardView::init ()
UBBoardView::init ()
{ {
connect (UBSettings::settings ()->boardPenPressureSensitive, SIGNAL (changed (QVariant)), connect (UBSettings::settings ()->boardPenPressureSensitive, SIGNAL (changed (QVariant)),
this, SLOT (settingChanged (QVariant))); this, SLOT (settingChanged (QVariant)));
@ -1439,4 +1438,3 @@ UBBoardView::setToolCursor (int tool)
controlViewport->setCursor (UBResources::resources ()->penCursor); controlViewport->setCursor (UBResources::resources ()->penCursor);
} }
} }

@ -18,8 +18,10 @@
#include "core/UBSettings.h" #include "core/UBSettings.h"
#include "core/UBApplication.h" #include "core/UBApplication.h"
#include "gui/UBMainWindow.h" #include "domain/UBGraphicsScene.h"
#include "board/UBBoardController.h"
#include "gui/UBMainWindow.h"
#include "core/memcheck.h" #include "core/memcheck.h"
UBDrawingController* UBDrawingController::sDrawingController = 0; UBDrawingController* UBDrawingController::sDrawingController = 0;
@ -87,6 +89,7 @@ void UBDrawingController::setStylusTool(int tool)
{ {
if (tool != mStylusTool) if (tool != mStylusTool)
{ {
UBApplication::boardController->activeScene()->deselectAllItems();
if (mStylusTool == UBStylusTool::Pen || mStylusTool == UBStylusTool::Marker if (mStylusTool == UBStylusTool::Pen || mStylusTool == UBStylusTool::Marker
|| mStylusTool == UBStylusTool::Line) || mStylusTool == UBStylusTool::Line)
{ {

@ -117,6 +117,9 @@ struct UBGraphicsItemData
, ItemOwnZValue , ItemOwnZValue
, itemLayerType //use instead of deprecated ItemLayerType , itemLayerType //use instead of deprecated ItemLayerType
, ItemUuid //storing uuid in QGraphicsItem for fast finding operations , ItemUuid //storing uuid in QGraphicsItem for fast finding operations
//Duplicating delegate's functions to make possible working with pure QGraphicsItem
, ItemFlippable // (bool)
, ItemRotatable // (bool)
}; };
}; };

@ -399,8 +399,8 @@ void UBSettings::init()
libIconSize = new UBSetting(this, "Library", "LibIconSize", defaultLibraryIconSize); libIconSize = new UBSetting(this, "Library", "LibIconSize", defaultLibraryIconSize);
actionGroupText = "Group items"; actionGroupText = tr("Group");
actionUngroupText = "Ungroup items"; actionUngroupText = tr("Ungroup");
} }

@ -29,6 +29,7 @@ UBGraphicsGroupContainerItem::UBGraphicsGroupContainerItem(QGraphicsItem *parent
setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly
} }
void UBGraphicsGroupContainerItem::addToGroup(QGraphicsItem *item) void UBGraphicsGroupContainerItem::addToGroup(QGraphicsItem *item)
@ -42,6 +43,19 @@ void UBGraphicsGroupContainerItem::addToGroup(QGraphicsItem *item)
return; return;
} }
//Check if group is allready rotatable or flippable
if (childItems().count()) {
if (UBGraphicsItem::isFlippable(this) && !UBGraphicsItem::isFlippable(item)) {
mDelegate->setFlippable(false);
}
if (UBGraphicsItem::isRotatable(this) && !UBGraphicsItem::isRotatable(item)) {
mDelegate->setRotatable(false);
}
} else {
mDelegate->setFlippable(UBGraphicsItem::isFlippable(item));
mDelegate->setRotatable(UBGraphicsItem::isRotatable(item));
}
// COMBINE // COMBINE
bool ok; bool ok;
QTransform itemTransform = item->itemTransform(this, &ok); QTransform itemTransform = item->itemTransform(this, &ok);
@ -80,7 +94,7 @@ void UBGraphicsGroupContainerItem::addToGroup(QGraphicsItem *item)
// ### Expensive, we could maybe use dirtySceneTransform bit for optimization // ### Expensive, we could maybe use dirtySceneTransform bit for optimization
item->setTransform(newItemTransform); item->setTransform(newItemTransform);
// item->d_func()->setIsMemberOfGroup(true); // item->d_func()->setIsMemberOfGroup(true);
prepareGeometryChange(); prepareGeometryChange();
itemsBoundingRect |= itemTransform.mapRect(item->boundingRect() | item->childrenBoundingRect()); itemsBoundingRect |= itemTransform.mapRect(item->boundingRect() | item->childrenBoundingRect());
update(); update();
@ -270,6 +284,27 @@ void UBGraphicsGroupContainerItem::pRemoveFromGroup(QGraphicsItem *item)
QGraphicsItem *newParent = parentItem(); QGraphicsItem *newParent = parentItem();
if (childItems().count()) {
if (!UBGraphicsItem::isFlippable(item) || !UBGraphicsItem::isRotatable(item)) {
bool flippableNow = true;
bool rotatableNow = true;
foreach (QGraphicsItem *item, childItems()) {
if (!UBGraphicsItem::isFlippable(item)) {
flippableNow = false;
}
if (!UBGraphicsItem::isRotatable(item)) {
rotatableNow = false;
}
if (!rotatableNow && !flippableNow) {
break;
}
}
mDelegate->setFlippable(flippableNow);
mDelegate->setRotatable(rotatableNow);
}
}
// COMBINE // COMBINE
bool ok; bool ok;
QTransform itemTransform; QTransform itemTransform;

@ -16,7 +16,9 @@ UBGraphicsGroupContainerItemDelegate::UBGraphicsGroupContainerItemDelegate(QGrap
UBGraphicsItemDelegate(pDelegated, parent, true, false, false), mDestroyGroupButton(0) UBGraphicsItemDelegate(pDelegated, parent, true, false, false), mDestroyGroupButton(0)
{ {
//Wrapper function. Use it to set correct data() to QGraphicsItem as well
setFlippable(false);
setRotatable(false);
} }
UBGraphicsGroupContainerItem *UBGraphicsGroupContainerItemDelegate::delegated() UBGraphicsGroupContainerItem *UBGraphicsGroupContainerItemDelegate::delegated()

@ -158,6 +158,10 @@ void UBGraphicsItemDelegate::init()
button->setFlag(QGraphicsItem::ItemIsSelectable, true); button->setFlag(QGraphicsItem::ItemIsSelectable, true);
} }
} }
//Wrapper function. Use it to set correct data() to QGraphicsItem as well
setFlippable(false);
setRotatable(false);
} }
@ -410,7 +414,7 @@ void UBGraphicsItemDelegate::remove(bool canUndo)
} }
bool UBGraphicsItemDelegate::isLocked() bool UBGraphicsItemDelegate::isLocked() const
{ {
return mDelegated->data(UBGraphicsItemData::ItemLocked).toBool(); return mDelegated->data(UBGraphicsItemData::ItemLocked).toBool();
} }
@ -598,6 +602,22 @@ void UBGraphicsItemDelegate::showMenu()
void UBGraphicsItemDelegate::setFlippable(bool flippable) void UBGraphicsItemDelegate::setFlippable(bool flippable)
{ {
mFlippable = flippable; mFlippable = flippable;
Q_ASSERT (mDelegated);
if (mDelegated) {
mDelegated->setData(UBGraphicsItemData::ItemFlippable, QVariant(flippable));
}
}
void UBGraphicsItemDelegate::setRotatable(bool pCanRotate)
{
mCanRotate = pCanRotate;
Q_ASSERT(mDelegated);
if (mDelegated) {
mDelegated->setData(UBGraphicsItemData::ItemRotatable, QVariant(pCanRotate));
}
} }
bool UBGraphicsItemDelegate::isFlippable() bool UBGraphicsItemDelegate::isFlippable()

@ -224,8 +224,8 @@ class UBGraphicsItemDelegate : public QObject
UBGraphicsDelegateFrame* frame() { return mFrame; } UBGraphicsDelegateFrame* frame() { return mFrame; }
bool canRotate() { return mCanRotate; } bool canRotate() const { return mCanRotate; }
bool isLocked(); bool isLocked() const;
bool canDuplicate() { return mCanDuplicate; } bool canDuplicate() { return mCanDuplicate; }
QMimeData* mimeData(){ return mMimeData; } QMimeData* mimeData(){ return mMimeData; }
@ -233,6 +233,7 @@ class UBGraphicsItemDelegate : public QObject
void setDragPixmap(const QPixmap &pix) {mDragPixmap = pix;} void setDragPixmap(const QPixmap &pix) {mDragPixmap = pix;}
void setFlippable(bool flippable); void setFlippable(bool flippable);
void setRotatable(bool pCanRotate);
bool isFlippable(); bool isFlippable();
void setButtonsVisible(bool visible); void setButtonsVisible(bool visible);

@ -42,7 +42,7 @@ void UBAudioPresentationWidget::paintEvent(QPaintEvent *event)
mask_img.fill(0xff); mask_img.fill(0xff);
QPainter mask_painter(&mask_img); QPainter mask_painter(&mask_img);
mask_painter.setBrush(QBrush( QColor(0, 0, 0))); mask_painter.setBrush(QBrush( QColor(0, 0, 0)));
mask_painter.drawRoundedRect(1,1, width()-3, height()-3, height()/5, height()/5); mask_painter.drawRoundedRect(1,1, width()-2, height()-2, height()/5, height()/5);
setMask(QBitmap::fromImage(mask_img)); setMask(QBitmap::fromImage(mask_img));
@ -131,7 +131,6 @@ UBGraphicsMediaItem::UBGraphicsMediaItem(const QUrl& pMediaFileUrl, QGraphicsIte
connect(mDelegate, SIGNAL(showOnDisplayChanged(bool)), this, SLOT(showOnDisplayChanged(bool))); connect(mDelegate, SIGNAL(showOnDisplayChanged(bool)), this, SLOT(showOnDisplayChanged(bool)));
connect(mMediaObject, SIGNAL(hasVideoChanged(bool)), this, SLOT(hasMediaChanged(bool))); connect(mMediaObject, SIGNAL(hasVideoChanged(bool)), this, SLOT(hasMediaChanged(bool)));
} }
@ -179,6 +178,18 @@ QVariant UBGraphicsMediaItem::itemChange(GraphicsItemChange change, const QVaria
return UBGraphicsProxyWidget::itemChange(change, value); return UBGraphicsProxyWidget::itemChange(change, value);
} }
void UBGraphicsMediaItem::setSourceUrl(const QUrl &pSourceUrl)
{
UBAudioPresentationWidget* pAudioWidget = dynamic_cast<UBAudioPresentationWidget*>(mAudioWidget);
if (pAudioWidget)
{
pAudioWidget->setTitle(UBFileSystemUtils::lastPathComponent(pSourceUrl.toString()));
}
UBItem::setSourceUrl(pSourceUrl);
}
void UBGraphicsMediaItem::clearSource() void UBGraphicsMediaItem::clearSource()
{ {
QString path = mediaFileUrl().toLocalFile(); QString path = mediaFileUrl().toLocalFile();

@ -97,16 +97,7 @@ public:
virtual void copyItemParameters(UBItem *copy) const; virtual void copyItemParameters(UBItem *copy) const;
virtual void setSourceUrl(const QUrl &pSourceUrl) virtual void setSourceUrl(const QUrl &pSourceUrl);
{
UBAudioPresentationWidget* pAudioWidget = dynamic_cast<UBAudioPresentationWidget*>(mAudioWidget);
if (pAudioWidget)
{
pAudioWidget->setTitle(UBFileSystemUtils::lastPathComponent(pSourceUrl.toLocalFile()));
}
UBItem::setSourceUrl(pSourceUrl);
}
public slots: public slots:

@ -56,6 +56,10 @@ UBGraphicsMediaItemDelegate::UBGraphicsMediaItemDelegate(UBGraphicsMediaItem* pD
{ {
delegated()->setMute(true); delegated()->setMute(true);
} }
//Wrapper function. Use it to set correct data() to QGraphicsItem as well
setFlippable(false);
setRotatable(false);
} }
bool UBGraphicsMediaItemDelegate::mousePressEvent(QGraphicsSceneMouseEvent *event) bool UBGraphicsMediaItemDelegate::mousePressEvent(QGraphicsSceneMouseEvent *event)

@ -28,10 +28,10 @@
UBGraphicsPixmapItem::UBGraphicsPixmapItem(QGraphicsItem* parent) UBGraphicsPixmapItem::UBGraphicsPixmapItem(QGraphicsItem* parent)
: QGraphicsPixmapItem(parent) : QGraphicsPixmapItem(parent)
{ {
mDelegate = new UBGraphicsItemDelegate(this, 0, true, true, false); mDelegate = new UBGraphicsItemDelegate(this, 0, true);
mDelegate->init(); mDelegate->init();
mDelegate->setFlippable(true); mDelegate->setFlippable(true);
mDelegate->setRotatable(true);
setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object);
setTransformationMode(Qt::SmoothTransformation); setTransformationMode(Qt::SmoothTransformation);

@ -308,9 +308,10 @@ UBGraphicsScene::~UBGraphicsScene()
void UBGraphicsScene::selectionChangedProcessing() void UBGraphicsScene::selectionChangedProcessing()
{ {
if (selectedItems().count()){ if (selectedItems().count()){
qDebug() << "Selected item bounding rect: " << selectedItems().first()->boundingRect(); // UBApplication::showMessage("ZValue is " + QString::number(selectedItems().first()->zValue(), 'f') + "own z value is "
UBApplication::showMessage("ZValue is " + QString::number(selectedItems().first()->zValue(), 'f') + "own z value is " // + QString::number(selectedItems().first()->data(UBGraphicsItemData::ItemOwnZValue).toReal(), 'f'));
+ QString::number(selectedItems().first()->data(UBGraphicsItemData::ItemOwnZValue).toReal(), 'f')); qDebug() << "flippable" << selectedItems().first()->data(UBGraphicsItemData::ItemFlippable).toBool() << endl
<< "rotatable" << selectedItems().first()->data(UBGraphicsItemData::ItemRotatable).toBool();
} }
} }
@ -1269,7 +1270,7 @@ void UBGraphicsScene::clearAnnotations()
while (itItems.hasNext()) while (itItems.hasNext())
{ {
QGraphicsItem* item = itItems.next(); QGraphicsItem* item = itItems.next();
UBGraphicsPolygonItem* pi = qgraphicsitem_cast<UBGraphicsPolygonItem*>(item); UBGraphicsStrokesGroup* pi = qgraphicsitem_cast<UBGraphicsStrokesGroup*>(item);
if (pi) if (pi)
{ {
removeItem(item); removeItem(item);
@ -1998,8 +1999,6 @@ void UBGraphicsScene::moveMagnifier(QPoint newPos, bool forceGrab)
QPoint dvZeroPoint = dView->mapToGlobal(QPoint(0,0)); QPoint dvZeroPoint = dView->mapToGlobal(QPoint(0,0));
QRect qcr = cView->geometry();
QRect qdr = dView->geometry();
int cvW = cView->width(); int cvW = cView->width();
int dvW = dView->width(); int dvW = dView->width();
qreal wCoeff = (qreal)dvW / (qreal)cvW; qreal wCoeff = (qreal)dvW / (qreal)cvW;
@ -2352,6 +2351,7 @@ void UBGraphicsScene::keyReleaseEvent(QKeyEvent * keyEvent)
default: default:
{ {
item->setSelected(false);
UBGraphicsItem *ubgi = dynamic_cast<UBGraphicsItem*>(item); UBGraphicsItem *ubgi = dynamic_cast<UBGraphicsItem*>(item);
if (0 != ubgi) if (0 != ubgi)
ubgi->remove(); ubgi->remove();

@ -9,6 +9,8 @@ UBGraphicsStrokesGroup::UBGraphicsStrokesGroup(QGraphicsItem *parent):QGraphicsI
mDelegate = new UBGraphicsItemDelegate(this, 0, true, true, false); mDelegate = new UBGraphicsItemDelegate(this, 0, true, true, false);
mDelegate->init(); mDelegate->init();
mDelegate->setFlippable(true); mDelegate->setFlippable(true);
mDelegate->setRotatable(true);
setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object);
setUuid(QUuid::createUuid()); setUuid(QUuid::createUuid());

@ -56,6 +56,7 @@ void UBGraphicsSvgItem::init()
mDelegate = new UBGraphicsItemDelegate(this, 0, true, true, false); mDelegate = new UBGraphicsItemDelegate(this, 0, true, true, false);
mDelegate->init(); mDelegate->init();
mDelegate->setFlippable(true); mDelegate->setFlippable(true);
mDelegate->setRotatable(true);
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);

@ -38,6 +38,8 @@ UBGraphicsTextItem::UBGraphicsTextItem(QGraphicsItem * parent)
mDelegate->init(); mDelegate->init();
mDelegate->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing); mDelegate->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing);
mDelegate->setFlippable(false);
mDelegate->setRotatable(true);
mTypeTextHereLabel = tr("<Type Text Here>"); mTypeTextHereLabel = tr("<Type Text Here>");

@ -28,7 +28,7 @@ UBGraphicsWebView::UBGraphicsWebView(QGraphicsItem* parent)
{ {
setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object);
mDelegate = new UBGraphicsItemDelegate(this, 0, true, false, false); mDelegate = new UBGraphicsItemDelegate(this, 0, true);
mDelegate->init(); mDelegate->init();
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);

@ -34,3 +34,13 @@ void UBGraphicsItem::assignZValue(QGraphicsItem *item, qreal value)
item->setZValue(value); item->setZValue(value);
item->setData(UBGraphicsItemData::ItemOwnZValue, value); item->setData(UBGraphicsItemData::ItemOwnZValue, value);
} }
bool UBGraphicsItem::isFlippable(QGraphicsItem *item)
{
return item->data(UBGraphicsItemData::ItemFlippable).toBool();
}
bool UBGraphicsItem::isRotatable(QGraphicsItem *item)
{
return item->data(UBGraphicsItemData::ItemRotatable).toBool();
}

@ -105,6 +105,9 @@ protected:
public: public:
static void assignZValue(QGraphicsItem*, qreal value); static void assignZValue(QGraphicsItem*, qreal value);
static bool isRotatable(QGraphicsItem *item);
static bool isFlippable(QGraphicsItem *item);
virtual UBGraphicsItemDelegate *Delegate() const = 0; virtual UBGraphicsItemDelegate *Delegate() const = 0;
virtual void remove() = 0; virtual void remove() = 0;

@ -107,7 +107,7 @@ void UBFeaturesWidget::currentSelected(const QModelIndex &current)
QString objName = sender()->objectName(); QString objName = sender()->objectName();
if (objName.isEmpty()) { if (objName.isEmpty()) {
qWarning() << "incorrrect sender"; qWarning() << "incorrect sender";
} else if (objName == objNamePathList) { } else if (objName == objNamePathList) {
//Calling to reset the model for listView. Maybe separate function needed //Calling to reset the model for listView. Maybe separate function needed
controller->searchStarted("", centralWidget->listView()); controller->searchStarted("", centralWidget->listView());
@ -478,12 +478,12 @@ UBFeaturesCentralWidget::UBFeaturesCentralWidget(QWidget *parent) : QWidget(pare
//Used to show search bar on the search widget //Used to show search bar on the search widget
webView = new UBFeaturesWebView(this); webView = new UBFeaturesWebView(this);
//filling stackwidget //filling stackwidget
mStackedWidget->addWidget(mNavigator); mStackedWidget->addWidget(mNavigator);
mStackedWidget->addWidget(mFeatureProperties); mStackedWidget->addWidget(mFeatureProperties);
mStackedWidget->addWidget(webView); mStackedWidget->addWidget(webView);
mStackedWidget->setCurrentIndex(MainList); mStackedWidget->setCurrentIndex(MainList);
mStackedWidget->setContentsMargins(0, 0, 0, 0); mStackedWidget->setContentsMargins(0, 0, 0, 0);
mAdditionalDataContainer = new QStackedWidget(this); mAdditionalDataContainer = new QStackedWidget(this);
@ -542,7 +542,7 @@ void UBFeaturesCentralWidget::setPropertiesThumbnail(const QPixmap &pix)
UBFeature UBFeaturesCentralWidget::getCurElementFromProperties() UBFeature UBFeaturesCentralWidget::getCurElementFromProperties()
{ {
return mFeatureProperties->getCurrentElement(); return mFeatureProperties->getCurrentElement();
} }
void UBFeaturesCentralWidget::showAdditionalData(AddWidget pWidgetType, AddWidgetState pState) void UBFeaturesCentralWidget::showAdditionalData(AddWidget pWidgetType, AddWidgetState pState)
@ -732,7 +732,7 @@ UBFeaturesWebView::UBFeaturesWebView(QWidget* parent, const char* name):QWidget(
mpView->setObjectName("SearchEngineView"); mpView->setObjectName("SearchEngineView");
mpSankoreAPI = new UBWidgetUniboardAPI(UBApplication::boardController->activeScene()); mpSankoreAPI = new UBWidgetUniboardAPI(UBApplication::boardController->activeScene());
mpView->page()->mainFrame()->addToJavaScriptWindowObject("sankore", mpSankoreAPI); mpView->page()->mainFrame()->addToJavaScriptWindowObject("sankore", mpSankoreAPI);
connect(mpView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(javaScriptWindowObjectCleared()));
mpWebSettings = QWebSettings::globalSettings(); mpWebSettings = QWebSettings::globalSettings();
mpWebSettings->setAttribute(QWebSettings::JavaEnabled, true); mpWebSettings->setAttribute(QWebSettings::JavaEnabled, true);
mpWebSettings->setAttribute(QWebSettings::PluginsEnabled, true); mpWebSettings->setAttribute(QWebSettings::PluginsEnabled, true);
@ -767,6 +767,11 @@ UBFeaturesWebView::~UBFeaturesWebView()
} }
} }
void UBFeaturesWebView::javaScriptWindowObjectCleared()
{
mpView->page()->mainFrame()->addToJavaScriptWindowObject("sankore", mpSankoreAPI);
}
void UBFeaturesWebView::showElement(const UBFeature &elem) void UBFeaturesWebView::showElement(const UBFeature &elem)
{ {
QString qsWidgetName; QString qsWidgetName;

@ -248,7 +248,6 @@ private slots:
void setFileNameList(const QStringList &pLst); void setFileNameList(const QStringList &pLst);
void reactOnTextChanged(const QString &pStr); void reactOnTextChanged(const QString &pStr);
private: private:
QLineEdit *mLineEdit; QLineEdit *mLineEdit;
QRegExpValidator *mValidator; QRegExpValidator *mValidator;
@ -289,6 +288,7 @@ public:
private slots: private slots:
void onLoadFinished(bool ok); void onLoadFinished(bool ok);
void javaScriptWindowObjectCleared();
private: private:
QWebView* mpView; QWebView* mpView;

@ -39,6 +39,7 @@ UBGraphicsCurtainItem::UBGraphicsCurtainItem(QGraphicsItem* parent)
{ {
mDelegate = new UBGraphicsCurtainItemDelegate(this, 0); mDelegate = new UBGraphicsCurtainItemDelegate(this, 0);
mDelegate->init(); mDelegate->init();
setFlag(QGraphicsItem::ItemIsMovable, true); setFlag(QGraphicsItem::ItemIsMovable, true);
setFlag(QGraphicsItem::ItemIsSelectable, true); setFlag(QGraphicsItem::ItemIsSelectable, true);

Loading…
Cancel
Save