diff --git a/resources/library/interactivities/Ass images.wgt/locales/fr/js/script.js b/resources/library/interactivities/Ass images.wgt/locales/fr/js/script.js
index 967256d0..3895c032 100644
--- a/resources/library/interactivities/Ass images.wgt/locales/fr/js/script.js
+++ b/resources/library/interactivities/Ass images.wgt/locales/fr/js/script.js
@@ -1,5 +1,5 @@
var sankoreLang = {
- display: "Fermer",
+ display: "Afficher",
edit: "Modifier",
short_desc: "Sélectionner le numéro «trois».",
add: "Nouveau bloc",
diff --git a/resources/library/interactivities/Ass sons.wgt/locales/fr/js/script.js b/resources/library/interactivities/Ass sons.wgt/locales/fr/js/script.js
index 184c4822..441069a9 100644
--- a/resources/library/interactivities/Ass sons.wgt/locales/fr/js/script.js
+++ b/resources/library/interactivities/Ass sons.wgt/locales/fr/js/script.js
@@ -21,6 +21,16 @@ var sankoreLang = {
"
- de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),
"+
"- de modifier un exercice ou d’en créer de nouveaux dans la même activité.
"+
+<<<<<<< HEAD
+"En mode édition, pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, puis
"+
+"- insérez une consigne en cliquant sur le champ de texte “Saisir votre description ici ...”,"+
+"
- insérez un son dans la zone à gauche de la consigne par glisser-déposer d’un son à partir de votre bibliothèque,
"+
+"- ajoutez des zones image(s) en cliquant sur le gros signe + en dessous,
"+
+"- insérez des images par glisser-déposer des images à partir de votre bibliothèque,
"+
+"- définissez l’image correcte de l’interactivité en cliquant sur le bouton valider “v” situé en bas à droite de l’image concernée.
"+
+"Pour supprimer une zone image, cliquez sur la croix située dans le coin supérieur droit de l’image.
"+
+"Pour remplacer un son, glissez-déposez simplement un nouveau son.
"+
+=======
"En mode édition, pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, puis
"+
"- insérez une consigne en cliquant sur le champ de texte “Saisir votre description ici ...”,"+
"
- insérez un son dans la zone à gauche de la consigne par glisser-déposer d’un son à partir de votre bibliothèque,
"+
@@ -29,6 +39,7 @@ var sankoreLang = {
"- définissez l’image correcte de l’interactivité en cliquant sur le bouton valider “v” situé en bas à droite de l’image concernée.
"+
"Pour supprimer une zone image, cliquez sur la croix située dans le coin supérieur droit de l’image.
"+
"Pour remplacer un son, glissez-déposez simplement un nouveau son.
"+
+>>>>>>> 986e8e8f3435c5208d294c97db33e0cf54790514
"Pour supprimer un exercice, cliquez sur la croix à gauche du numéro de l’exercice.
"+
diff --git a/resources/library/interactivities/Cat text.wgt/locales/fr/js/script.js b/resources/library/interactivities/Cat text.wgt/locales/fr/js/script.js
index 90cbd71c..3e1395ec 100644
--- a/resources/library/interactivities/Cat text.wgt/locales/fr/js/script.js
+++ b/resources/library/interactivities/Cat text.wgt/locales/fr/js/script.js
@@ -1,5 +1,5 @@
var sankoreLang = {
- display: "Fermer",
+ display: "Afficher",
edit: "Modifier",
first_desc: "Fruits",
second_desc: "Légumes",
@@ -28,13 +28,14 @@ var sankoreLang = {
"- de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),
"+
"- de modifier un exercice ou d’en créer de nouveaux dans la même activité.
"+
- "En mode édition, pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, une zone bleue apparaît, c’est une catégorie, puis.
"+
- "- insérez le nom de la catégorie (par exemple “fruits”, “légumes”, “mammifères”...) en cliquant dans le champ de texte “Saisir le nom de la catégorie ici …”,
"+
- "- cliquez sur le gros “+” situé à gauche de la catégorie ce qui vous permet de rajouter des étiquettes de mots,
"+
- "- entrez des mots dans ces étiquettes,
"+
- "- ajoutez ensuite une catégorie (ou plusieurs) en cliquant sur le signe “+” situé à droite de la catégorie, complétez par son nom et ajoutez des étiquettes de mots.
"+
- "Pour supprimer une étiquette de mots, cliquez sur la croix située dans le coin supérieur droit de celle-ci.
"+
- "Pour supprimer une catégorie, cliquez sur le signe “-” situé à droite de celle-ci.
"+
+"En mode édition, pour créer un nouvel exercice, cliquez sur “Nouveau bloc” en bas, une zone bleue apparaît, c’est une catégorie, puis :
"+
+"- insérez le nom de la catégorie (par exemple “fruits”, “légumes”, “mammifères”...) en cliquant dans le champ de texte “Saisir le nom de la catégorie ici …”,
"+
+"- cliquez sur le gros “+” situé à gauche de la catégorie ce qui vous permet de rajouter des étiquettes de mots,
"+
+"- entrez des mots dans ces étiquettes,
"+
+"- ajoutez ensuite une catégorie (ou plusieurs) en cliquant sur le signe “+” situé à droite de la catégorie, complétez par son nom et ajoutez des étiquettes de mots.
"+
+"Pour supprimer une étiquette de mots, cliquez sur la croix située dans le coin supérieur droit de celle-ci.
"+
+"Pour supprimer une catégorie, cliquez sur le signe “-” situé à droite de celle-ci.
"+
+
"Pour supprimer un exercice, cliquez sur la croix à gauche du numéro de l’exercice.
"+
diff --git a/resources/library/interactivities/Choisir.wgt/locales/fr/scripts/selQuestionApp.js b/resources/library/interactivities/Choisir.wgt/locales/fr/scripts/selQuestionApp.js
index 6c976c50..36b0c319 100644
--- a/resources/library/interactivities/Choisir.wgt/locales/fr/scripts/selQuestionApp.js
+++ b/resources/library/interactivities/Choisir.wgt/locales/fr/scripts/selQuestionApp.js
@@ -52,7 +52,7 @@ var sankoreLang = {
"- de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),
"+
"- de modifier un exercice ou d’en créer de nouveaux dans la même activité.
"+
-"En mode édition, pour créer un nouvel exercice, cliquez sur “Ajouter une nouvelle question …”, puis.
"+
+"En mode édition, pour créer un nouvel exercice, cliquez sur “Ajouter une nouvelle question …”, puis :
"+
"- insérez la question en cliquant sur le champ de texte “Saisir la question ici ...”,
"+
"- cliquez sur ”Options” pour choisir l’affichage des propositions (une seule bonne réponse, plusieurs bonnes réponses, liste déroulante). Cliquez sur “Fermer”,
"+
"- cliquez sur ”Ajouter une proposition” et saisissez la proposition dans le champ de texte,
"+
diff --git a/resources/library/interactivities/Enveloppe.wgt/js/help_fr-template.js b/resources/library/interactivities/Enveloppe.wgt/js/help_fr-template.js
index 17301536..44e0fc11 100644
--- a/resources/library/interactivities/Enveloppe.wgt/js/help_fr-template.js
+++ b/resources/library/interactivities/Enveloppe.wgt/js/help_fr-template.js
@@ -8,7 +8,7 @@
Le bouton “Modifier” vous permet :
- de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut tablette),
-- de déterminer le nombre de trombone(s) souhaités.
+- de déterminer le nombre de trombone(s) souhaité(s).
Le bouton “Afficher” vous permet d’utiliser l’activité.
\ No newline at end of file
diff --git a/resources/library/interactivities/Etudier.wgt/locales/fr/js/script.js b/resources/library/interactivities/Etudier.wgt/locales/fr/js/script.js
index 7d6c73a6..3d9d5b47 100644
--- a/resources/library/interactivities/Etudier.wgt/locales/fr/js/script.js
+++ b/resources/library/interactivities/Etudier.wgt/locales/fr/js/script.js
@@ -1,5 +1,5 @@
var sankoreLang = {
- display: "Fermer",
+ display: "Afficher",
edit: "Modifier",
text_content: "Ceci est un exemple. Au lieu de ce texte, vous pouvez mettre votre propre texte ou glisser-déposer une image, un son ou une vidéo.",
new_txt: "Nouveau bloc de texte",
@@ -18,12 +18,14 @@ var sankoreLang = {
"- de choisir le thème de l’interactivité : tablette, ardoise ou aucun (par défaut aucun),
"+
"- de modifier les pages du livret.
"+
- "Sur chaque page, vous pouvez :
"+
- "- insérer des zones de texte avec le bouton “+T” situé en haut à gauche de l’interactivité. (pour modifier ces zones de texte, cliquez à l’intérieur et écrivez du texte),
"+
- "- insérer des images, sons et vidéos par glisser-déposer de fichiers depuis la bibliothèque jusqu’à l’intérieur de la page du livret,
"+
- "- déplacer les textes, images, sons et vidéos à l’intérieur de la page en cliquant et en déplaçant la flèche multidirectionnelle qui se situe dans le coin supérieur gauche de chaque élément,
"+
- "- agrandir la taille d’un élément avec la double flèche en bas à droite de celui-ci,
"+
- "- supprimer un élément avec la case en haut à droite de celui-ci.
"+
+
+"Sur chaque page, vous pouvez :
"+
+"- insérer des zones de texte avec le bouton “+T” situé en haut à gauche de l’interactivité (pour modifier ces zones de texte, cliquez à l’intérieur et écrivez du texte),
"+
+"- insérer des images, sons et vidéos par glisser-déposer de fichiers depuis la bibliothèque jusqu’à l’intérieur de la page du livret,
"+
+"- déplacer les textes, images, sons et vidéos à l’intérieur de la page en cliquant et en déplaçant la flèche multidirectionnelle qui se situe dans le coin supérieur gauche de chaque élément,
"+
+"- agrandir la taille d’un élément avec la double flèche en bas à droite de celui-ci,
"+
+"- supprimer un élément avec la case en haut à droite de celui-ci.
"+
+
"Pour ajouter une page, cliquez sur la flèche verte accompagnée d’un “+” se trouvant en bas à gauche et à droite.
"+
"Pour supprimer une page, cliquez sur la croix rouge située en haut à droite de la page.
"+
diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp
index 17e25564..91e67e88 100644
--- a/src/adaptors/UBSvgSubsetAdaptor.cpp
+++ b/src/adaptors/UBSvgSubsetAdaptor.cpp
@@ -1229,10 +1229,10 @@ bool UBSvgSubsetAdaptor::UBSvgSubsetWriter::persistScene(int pageIndex)
//disabling g section parsing as a group of elements. Use groups refs instead
// mXmlWriter.writeStartElement("g");
// mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "uuid", UBStringUtils::toCanonicalUuid(strokesGroupItem->uuid()));
- QMatrix matrix = item->sceneMatrix();
- if (!matrix.isIdentity()){
- mXmlWriter.writeAttribute("transform", toSvgTransform(matrix));
- }
+// QMatrix matrix = item->sceneMatrix();
+// if (!matrix.isIdentity()){
+// mXmlWriter.writeAttribute("transform", toSvgTransform(matrix));
+// }
// Add the polygons
foreach(QGraphicsItem* item, strokesGroupItem->childItems()){
diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp
index 8514fe26..94d317d4 100644
--- a/src/board/UBBoardController.cpp
+++ b/src/board/UBBoardController.cpp
@@ -537,7 +537,7 @@ void UBBoardController::duplicateScene()
duplicateScene(mActiveSceneIndex);
}
-UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item)
+UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item, bool bAsync)
{
if (!item)
return NULL;
@@ -568,7 +568,10 @@ UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item)
if (srcFile.isEmpty())
srcFile = item->sourceUrl().toString();
- QString contentTypeHeader = UBFileSystemUtils::mimeTypeFromFileName(srcFile);
+ QString contentTypeHeader;
+ if (!srcFile.isEmpty())
+ contentTypeHeader = UBFileSystemUtils::mimeTypeFromFileName(srcFile);
+
if(NULL != qgraphicsitem_cast(commonItem))
itemMimeType = UBMimeType::Group;
else
@@ -593,9 +596,13 @@ UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item)
if (mitem)
{
sourceUrl = mitem->mediaFileUrl();
- downloadURL(sourceUrl, srcFile, itemPos, QSize(itemSize.width(), itemSize.height()), false, false);
+ if (bAsync)
+ {
+ downloadURL(sourceUrl, srcFile, itemPos, QSize(itemSize.width(), itemSize.height()), false, false);
+ return NULL; // async operation
+ }
}
- }return NULL; // async operation
+ }break;
case UBMimeType::VectorImage:
{
@@ -621,35 +628,32 @@ UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item)
case UBMimeType::Group:
{
- UBGraphicsGroupContainerItem* groupItem = dynamic_cast(item);
+ UBGraphicsGroupContainerItem* groupItem = dynamic_cast(item);
UBGraphicsGroupContainerItem* duplicatedGroup = NULL;
- if(groupItem){
- QTransform groupTransform = groupItem->transform();
- groupItem->resetTransform();
-
- QList children = groupItem->childItems();
- foreach(QGraphicsItem* pIt, children){
- UBItem* pItem = dynamic_cast(pIt);
- if(NULL != pItem){
- duplicateItem(pItem);
- }
- }
- groupItem->setTransform(groupTransform);
- groupItem->setSelected(false);
- UBApplication::mainWindow->actionGroupItems->trigger();
- QList selItems = mActiveScene->selectedItems();
- if(!selItems.empty()){
- // I don't like this solution but for now this is the only way I found.
- // Normally, at this state, only the duplicated group should be selected
- duplicatedGroup = dynamic_cast(selItems.at(0));
- if(NULL != duplicatedGroup){
- duplicatedGroup->setTransform(groupTransform);
- }
- }
- }
- retItem = dynamic_cast(duplicatedGroup);
- break;
- }
+
+ QList duplicatedItems;
+ QList children = groupItem->childItems();
+ foreach(QGraphicsItem* pIt, children){
+ UBItem* pItem = dynamic_cast(pIt);
+ if(pItem){ // we diong sync duplication of all childs.
+ QGraphicsItem * itemToGroup = dynamic_cast(duplicateItem(pItem, false));
+ if (itemToGroup)
+ duplicatedItems.append(itemToGroup);
+ }
+ }
+ duplicatedGroup = mActiveScene->createGroup(duplicatedItems);
+ duplicatedGroup->setTransform(groupItem->transform());
+ groupItem->setSelected(false);
+
+ retItem = dynamic_cast(duplicatedGroup);
+
+ QGraphicsItem * itemToAdd = dynamic_cast(retItem);
+ if (itemToAdd)
+ {
+ mActiveScene->addItem(itemToAdd);
+ itemToAdd->setSelected(true);
+ }
+ }break;
case UBMimeType::UNKNOWN:
{
@@ -668,7 +672,7 @@ UBGraphicsItem *UBBoardController::duplicateItem(UBItem *item)
if (retItem)
return retItem;
- UBItem *createdItem = downloadFinished(true, sourceUrl, sourceUrl, contentTypeHeader, pData, itemPos, QSize(itemSize.width(), itemSize.height()), false);
+ UBItem *createdItem = downloadFinished(true, sourceUrl, srcFile, contentTypeHeader, pData, itemPos, QSize(itemSize.width(), itemSize.height()), false);
if (createdItem)
{
createdItem->setSourceUrl(item->sourceUrl());
diff --git a/src/board/UBBoardController.h b/src/board/UBBoardController.h
index d7f44e37..aa27b788 100644
--- a/src/board/UBBoardController.h
+++ b/src/board/UBBoardController.h
@@ -159,7 +159,7 @@ class UBBoardController : public UBDocumentContainer
void moveSceneToIndex(int source, int target);
void duplicateScene(int index);
- UBGraphicsItem *duplicateItem(UBItem *item);
+ UBGraphicsItem *duplicateItem(UBItem *item, bool bAsync = true);
void deleteScene(int index);
bool cacheIsVisible() {return mCacheWidgetIsEnabled;}