From 9b133fa4bc3086b617115465c35ac7410c52fc40 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Mon, 3 Sep 2012 14:55:58 +0200 Subject: [PATCH 01/29] fixed issue 1084 --- src/gui/UBTeacherGuideWidget.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gui/UBTeacherGuideWidget.cpp b/src/gui/UBTeacherGuideWidget.cpp index ca73ec76..77bebf96 100644 --- a/src/gui/UBTeacherGuideWidget.cpp +++ b/src/gui/UBTeacherGuideWidget.cpp @@ -895,9 +895,9 @@ void UBTeacherGuidePageZeroWidget::fillComboBoxes() parametersFile.close(); QStringList licences; - licences << tr("Attribution CC BY") + licences << tr("Attribution-ShareAlike CC BY-SA") + << tr("Attribution CC BY") << tr("Attribution-NoDerivs CC BY-ND") - << tr("Attribution-ShareAlike CC BY-SA") << tr("Attribution-NonCommercial CC BY-NC") << tr("Attribution-NonCommercial-NoDerivs CC BY-NC-ND") << tr("Attribution-NonCommercial-ShareAlike CC BY-NC-SA") @@ -905,9 +905,9 @@ void UBTeacherGuidePageZeroWidget::fillComboBoxes() << tr("Copyright"); mpLicenceBox->addItems(licences); QStringList licenceIconList; - licenceIconList << ":images/licenses/ccby.png" + licenceIconList << ":images/licenses/ccbysa.png" + << ":images/licenses/ccby.png" << ":images/licenses/ccbynd.png" - << ":images/licenses/ccbysa.png" << ":images/licenses/ccbync.png" << ":images/licenses/ccbyncnd.png" << ":images/licenses/ccbyncsa.png"; From 218071207cc7e719e5fc8dba64d197588538d3d7 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Mon, 3 Sep 2012 15:59:49 +0200 Subject: [PATCH 02/29] resizable title page first draft achieved --- src/gui/UBTeacherGuideWidget.cpp | 74 ++++++++++++++++++++------------ src/gui/UBTeacherGuideWidget.h | 7 ++- 2 files changed, 52 insertions(+), 29 deletions(-) diff --git a/src/gui/UBTeacherGuideWidget.cpp b/src/gui/UBTeacherGuideWidget.cpp index 77bebf96..a18edc4e 100644 --- a/src/gui/UBTeacherGuideWidget.cpp +++ b/src/gui/UBTeacherGuideWidget.cpp @@ -20,7 +20,7 @@ #include #include #include - +#include #include "UBTeacherGuideWidget.h" @@ -632,8 +632,11 @@ UBTeacherGuidePageZeroWidget::UBTeacherGuidePageZeroWidget(QWidget* parent, cons QWidget(parent) , mpLayout(NULL) , mpButtonTitleLayout(NULL) + , mpContainerWidgetLayout(NULL) , mpModePushButton(NULL) , mpPageNumberLabel(NULL) + , mpScrollArea(NULL) + , mpContainerWidget(NULL) , mpSessionTitle(NULL) , mpSeparatorSessionTitle(NULL) , mpAuthorsLabel(NULL) @@ -673,6 +676,18 @@ UBTeacherGuidePageZeroWidget::UBTeacherGuidePageZeroWidget(QWidget* parent, cons mpPageNumberLabel->setText(tr("Title page")); mpLayout->addWidget(mpPageNumberLabel); + + mpScrollArea = new QScrollArea(); + mpContainerWidget = new QWidget(); + mpContainerWidgetLayout = new QVBoxLayout(); + + + mpLayout->addWidget(mpScrollArea); + mpScrollArea->setWidget(mpContainerWidget); + mpScrollArea->setWidgetResizable(true); + mpContainerWidget->setLayout(mpContainerWidgetLayout); + + mpButtonTitleLayout = new QHBoxLayout(0); mpModePushButton = new QPushButton(this); @@ -687,129 +702,129 @@ UBTeacherGuidePageZeroWidget::UBTeacherGuidePageZeroWidget(QWidget* parent, cons mpButtonTitleLayout->addWidget(mpSessionTitle); connect(this, SIGNAL(resized()), mpSessionTitle, SLOT(onTextChanged())); - mpLayout->addLayout(mpButtonTitleLayout); + mpContainerWidgetLayout->addLayout(mpButtonTitleLayout); mpSeparatorSessionTitle = new QFrame(this); mpSeparatorSessionTitle->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT); mpSeparatorSessionTitle->setObjectName("UBTGSeparator"); - mpLayout->addWidget(mpSeparatorSessionTitle); + mpContainerWidgetLayout->addWidget(mpSeparatorSessionTitle); mpAuthorsLabel = new QLabel(this); mpAuthorsLabel->setObjectName("UBTGZeroPageEditionModeTitle"); mpAuthorsLabel->setText(tr("Author(s)")); mpAuthorsLabel->setStyleSheet(chapterStyle); - mpLayout->addWidget(mpAuthorsLabel); + mpContainerWidgetLayout->addWidget(mpAuthorsLabel); mpAuthors = new UBTGAdaptableText(0, this); mpAuthors->setObjectName("UBTGZeroPageInputText"); mpAuthors->setPlaceHolderText(tr("Type authors here ...")); - mpLayout->addWidget(mpAuthors); + mpContainerWidgetLayout->addWidget(mpAuthors); connect(this, SIGNAL(resized()), mpAuthors, SLOT(onTextChanged())); mpCreationLabel = new QLabel(this); mpCreationLabel->setObjectName("UBTGZeroPageDateLabel"); - mpLayout->addWidget(mpCreationLabel); + mpContainerWidgetLayout->addWidget(mpCreationLabel); mpLastModifiedLabel = new QLabel(this); mpLastModifiedLabel->setObjectName("UBTGZeroPageDateLabel"); - mpLayout->addWidget(mpLastModifiedLabel); + mpContainerWidgetLayout->addWidget(mpLastModifiedLabel); mpSeparatorAuthors = new QFrame(this); mpSeparatorAuthors->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT); mpSeparatorAuthors->setObjectName("UBTGSeparator"); - mpLayout->addWidget(mpSeparatorAuthors); + mpContainerWidgetLayout->addWidget(mpSeparatorAuthors); mpObjectivesLabel = new QLabel(this); mpObjectivesLabel->setObjectName("UBTGZeroPageEditionModeTitle"); mpObjectivesLabel->setText(tr("Objective(s)")); mpObjectivesLabel->setStyleSheet(chapterStyle); - mpLayout->addWidget(mpObjectivesLabel); + mpContainerWidgetLayout->addWidget(mpObjectivesLabel); mpObjectives = new UBTGAdaptableText(0, this); mpObjectives->setObjectName("UBTGZeroPageInputText"); mpObjectives->setPlaceHolderText(tr("Type objectives here...")); - mpLayout->addWidget(mpObjectives); + mpContainerWidgetLayout->addWidget(mpObjectives); connect(this, SIGNAL(resized()), mpObjectives, SLOT(onTextChanged())); mpSeparatorObjectives = new QFrame(this); mpSeparatorObjectives->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT); mpSeparatorObjectives->setObjectName("UBTGSeparator"); - mpLayout->addWidget(mpSeparatorObjectives); + mpContainerWidgetLayout->addWidget(mpSeparatorObjectives); mpIndexLabel = new QLabel(this); mpIndexLabel->setObjectName("UBTGZeroPageEditionModeTitle"); mpIndexLabel->setText(tr("Resource indexing")); mpIndexLabel->setStyleSheet(chapterStyle); - mpLayout->addWidget(mpIndexLabel); + mpContainerWidgetLayout->addWidget(mpIndexLabel); mpKeywordsLabel = new QLabel(this); mpKeywordsLabel->setObjectName("UBTGZeroPageItemLabel"); mpKeywordsLabel->setText(tr("Keywords:")); mpKeywordsLabel->setStyleSheet(chapterStyle); - mpLayout->addWidget(mpKeywordsLabel); + mpContainerWidgetLayout->addWidget(mpKeywordsLabel); mpKeywords = new UBTGAdaptableText(0, this); mpKeywords->setPlaceHolderText(tr("Type keywords here ...")); - mpLayout->addWidget(mpKeywords); + mpContainerWidgetLayout->addWidget(mpKeywords); connect(this, SIGNAL(resized()), mpKeywords, SLOT(onTextChanged())); mpSchoolLevelItemLabel = new QLabel(this); mpSchoolLevelItemLabel->setObjectName("UBTGZeroPageItemLabel"); mpSchoolLevelItemLabel->setText(tr("Level:")); mpSchoolLevelItemLabel->setStyleSheet(chapterStyle); - mpLayout->addWidget(mpSchoolLevelItemLabel); + mpContainerWidgetLayout->addWidget(mpSchoolLevelItemLabel); mpSchoolLevelBox = new QComboBox(this); mpSchoolLevelBox->setMinimumHeight(22); mpSchoolLevelBox->setObjectName("DockPaletteWidgetComboBox"); connect(mpSchoolLevelBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(onSchoolLevelChanged(QString))); - mpLayout->addWidget(mpSchoolLevelBox); + mpContainerWidgetLayout->addWidget(mpSchoolLevelBox); mpSchoolLevelValueLabel = new QLabel(this); - mpLayout->addWidget(mpSchoolLevelValueLabel); + mpContainerWidgetLayout->addWidget(mpSchoolLevelValueLabel); mpSchoolSubjectsItemLabel = new QLabel(this); mpSchoolSubjectsItemLabel->setObjectName("UBTGZeroPageItemLabel"); mpSchoolSubjectsItemLabel->setText(tr("Subjects:")); mpSchoolSubjectsItemLabel->setStyleSheet(chapterStyle); - mpLayout->addWidget(mpSchoolSubjectsItemLabel); + mpContainerWidgetLayout->addWidget(mpSchoolSubjectsItemLabel); mpSchoolSubjectsBox = new QComboBox(this); mpSchoolSubjectsBox->setMinimumHeight(22); mpSchoolSubjectsBox->setObjectName("DockPaletteWidgetComboBox"); - mpLayout->addWidget(mpSchoolSubjectsBox); + mpContainerWidgetLayout->addWidget(mpSchoolSubjectsBox); mpSchoolSubjectsValueLabel = new QLabel(this); - mpLayout->addWidget(mpSchoolSubjectsValueLabel); + mpContainerWidgetLayout->addWidget(mpSchoolSubjectsValueLabel); mpSchoolTypeItemLabel = new QLabel(this); mpSchoolTypeItemLabel->setObjectName("UBTGZeroPageItemLabel"); mpSchoolTypeItemLabel->setText(tr("Type:")); mpSchoolTypeItemLabel->setStyleSheet(chapterStyle); - mpLayout->addWidget(mpSchoolTypeItemLabel); + mpContainerWidgetLayout->addWidget(mpSchoolTypeItemLabel); mpSchoolTypeBox = new QComboBox(this); mpSchoolTypeBox->setMinimumHeight(22); mpSchoolTypeBox->setObjectName("DockPaletteWidgetComboBox"); - mpLayout->addWidget(mpSchoolTypeBox); + mpContainerWidgetLayout->addWidget(mpSchoolTypeBox); mpSchoolTypeValueLabel = new QLabel(this); - mpLayout->addWidget(mpSchoolTypeValueLabel); + mpContainerWidgetLayout->addWidget(mpSchoolTypeValueLabel); mpSeparatorIndex = new QFrame(this); mpSeparatorIndex->setFixedHeight(UBTG_SEPARATOR_FIXED_HEIGHT); mpSeparatorIndex->setObjectName("UBTGSeparator"); - mpLayout->addWidget(mpSeparatorIndex); + mpContainerWidgetLayout->addWidget(mpSeparatorIndex); mpLicenceLabel = new QLabel(this); mpLicenceLabel->setObjectName("UBTGZeroPageItemLabel"); mpLicenceLabel->setText(tr("Licence")); mpLicenceLabel->setStyleSheet(chapterStyle); - mpLayout->addWidget(mpLicenceLabel); + mpContainerWidgetLayout->addWidget(mpLicenceLabel); mpLicenceBox = new QComboBox(this); mpLicenceBox->setMinimumHeight(22); mpLicenceBox->setObjectName("DockPaletteWidgetComboBox"); - mpLayout->addWidget(mpLicenceBox); + mpContainerWidgetLayout->addWidget(mpLicenceBox); mpLicenceLayout = new QHBoxLayout(0); mpLicenceIcon = new QLabel(this); mpLicenceLayout->addWidget(mpLicenceIcon); mpLicenceValueLabel = new QLabel(this); mpLicenceLayout->addWidget(mpLicenceValueLabel); - mpLayout->addLayout(mpLicenceLayout); - mpLayout->addStretch(1); + mpContainerWidgetLayout->addLayout(mpLicenceLayout); + mpContainerWidgetLayout->addStretch(1); connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), this, SLOT(onActiveSceneChanged())); fillComboBoxes(); @@ -845,6 +860,9 @@ UBTeacherGuidePageZeroWidget::~UBTeacherGuidePageZeroWidget() DELETEPTR(mpModePushButton); DELETEPTR(mpLicenceLayout); DELETEPTR(mpButtonTitleLayout); + DELETEPTR(mpContainerWidgetLayout); + DELETEPTR(mpContainerWidget); + DELETEPTR(mpScrollArea); DELETEPTR(mpLayout); } diff --git a/src/gui/UBTeacherGuideWidget.h b/src/gui/UBTeacherGuideWidget.h index a970807e..60e5ab04 100644 --- a/src/gui/UBTeacherGuideWidget.h +++ b/src/gui/UBTeacherGuideWidget.h @@ -23,7 +23,7 @@ class QVBoxLayout; class QPushButton; class UBDocumentProxy; class UBGraphicsTextItem; - +class QScrollArea; #include "UBTeacherGuideWidgetsTools.h" @@ -155,8 +155,13 @@ private: QVBoxLayout* mpLayout; QHBoxLayout* mpButtonTitleLayout; + QVBoxLayout* mpContainerWidgetLayout; QPushButton* mpModePushButton; QLabel* mpPageNumberLabel; + + QScrollArea* mpScrollArea; + QWidget* mpContainerWidget; + UBTGAdaptableText* mpSessionTitle; QFrame* mpSeparatorSessionTitle; From 4ec54ee3a86ceefcdec2b87b8c4a6d212cea76fe Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Mon, 3 Sep 2012 20:31:51 +0300 Subject: [PATCH 03/29] Delete group after deletion of last member --- src/domain/UBGraphicsScene.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 018d463c..0f3ecc17 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -1600,6 +1600,8 @@ void UBGraphicsScene::addItems(const QSet& items) void UBGraphicsScene::removeItem(QGraphicsItem* item) { + UBGraphicsGroupContainerItem* group = qgraphicsitem_cast(item->parentItem()); + item->setSelected(false); UBCoreGraphicsScene::removeItem(item); UBApplication::boardController->freezeW3CWidget(item, true); @@ -1608,6 +1610,15 @@ void UBGraphicsScene::removeItem(QGraphicsItem* item) --mItemCount; mFastAccessItems.removeAll(item); + + if (group) + { + if (group->childItems().empty()) + { + group->Delegate()->remove(); + UBCoreGraphicsScene::removeItemFromDeletion(group); + } + } } void UBGraphicsScene::removeItems(const QSet& items) From e232bbc9009e107796114da3aabd2d3ef0ae1e7e Mon Sep 17 00:00:00 2001 From: Ilia Ryabokon Date: Mon, 3 Sep 2012 21:49:05 +0300 Subject: [PATCH 04/29] Some changes crash related --- src/domain/UBGraphicsScene.cpp | 29 +++++++++++++++++--------- src/frameworks/UBCoreGraphicsScene.cpp | 1 + 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 0f3ecc17..d5eb8d36 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -1099,6 +1099,11 @@ void UBGraphicsScene::clearItemsAndAnnotations() setDocumentUpdated(); } +bool isService(QGraphicsItem *item) { + return (item->type() == UBGraphicsDelegateFrame::Type) + || (item->parentItem() && item->parentItem()->Type == UBGraphicsDelegateFrame::Type); +} + void UBGraphicsScene::clearItems() { deselectAllItems(); @@ -1113,9 +1118,13 @@ void UBGraphicsScene::clearItems() bool isPolygon = qgraphicsitem_cast(item) != NULL; bool isStrokesGroup = qgraphicsitem_cast(item) != NULL; - if(!isGroup && !isPolygon && !isStrokesGroup && !mTools.contains(item) && !isBackgroundObject(item)) - { + bool inGroup = (item->parentItem() + && (item->parentItem()->type() == UBGraphicsGroupContainerItem::Type)); + + if(!isGroup && !isPolygon && !isStrokesGroup && !mTools.contains(item) && !isBackgroundObject(item)) { removeItem(item); + } + if (!inGroup || !isService(item)) { removedItems << item; } } @@ -1611,14 +1620,14 @@ void UBGraphicsScene::removeItem(QGraphicsItem* item) mFastAccessItems.removeAll(item); - if (group) - { - if (group->childItems().empty()) - { - group->Delegate()->remove(); - UBCoreGraphicsScene::removeItemFromDeletion(group); - } - } +// if (group) +// { +// if (group->childItems().empty()) +// { +// group->Delegate()->remove(); +// UBCoreGraphicsScene::removeItemFromDeletion(group); +// } +// } } void UBGraphicsScene::removeItems(const QSet& items) diff --git a/src/frameworks/UBCoreGraphicsScene.cpp b/src/frameworks/UBCoreGraphicsScene.cpp index b39eef0d..28dd6a9f 100644 --- a/src/frameworks/UBCoreGraphicsScene.cpp +++ b/src/frameworks/UBCoreGraphicsScene.cpp @@ -73,6 +73,7 @@ void UBCoreGraphicsScene::removeItem(QGraphicsItem* item, bool forceDelete) QGraphicsScene::removeItem(item); if (forceDelete) { + qDebug() << "force delete is " << forceDelete; deleteItem(item); } setModified(true); From a3be61c15b7886a4d434e6715dc58c158c976742 Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Tue, 4 Sep 2012 13:00:35 +0300 Subject: [PATCH 05/29] Keyboard under MAX 10.7 --- src/gui/UBKeyboardPalette.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gui/UBKeyboardPalette.cpp b/src/gui/UBKeyboardPalette.cpp index 3f1fe242..2a496526 100644 --- a/src/gui/UBKeyboardPalette.cpp +++ b/src/gui/UBKeyboardPalette.cpp @@ -60,7 +60,10 @@ UBKeyboardPalette::UBKeyboardPalette(QWidget *parent) createCtrlButtons(); nCurrentLocale = UBSettings::settings()->KeyboardLocale->get().toInt(); - setInput(locales[nCurrentLocale]); + if (nCurrentLocale < 0 || nCurrentLocale >= nLocalesCount) + nCurrentLocale = 0; + if (locales!=NULL) + setInput(locales[nCurrentLocale]); setContentsMargins( 22, 22, 22, 22 ); From a8fadf639e85f54d22196bdb26e1a9195661c663 Mon Sep 17 00:00:00 2001 From: Aleksei Kanash Date: Tue, 4 Sep 2012 13:29:08 +0300 Subject: [PATCH 06/29] Frame shows rotation angle at mouse press to rotation area. --- src/domain/UBGraphicsDelegateFrame.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/domain/UBGraphicsDelegateFrame.cpp b/src/domain/UBGraphicsDelegateFrame.cpp index a2da072a..de40ab43 100644 --- a/src/domain/UBGraphicsDelegateFrame.cpp +++ b/src/domain/UBGraphicsDelegateFrame.cpp @@ -226,7 +226,7 @@ void UBGraphicsDelegateFrame::mousePressEvent(QGraphicsSceneMouseEvent *event) mInitialTransform = buildTransform(); mCurrentTool = toolFromPos(event->pos()); - setCursorFromAngle(QString("")); + setCursorFromAngle(QString::number((int)mAngle % 360)); event->accept(); prepareFramesToMove(getLinkedFrames()); From 5bb5444b61697b9e6161e66ba4a86a25e612a70c Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Tue, 4 Sep 2012 13:23:52 +0200 Subject: [PATCH 07/29] fixed issue for resizing on title page --- src/gui/UBTeacherGuideWidget.cpp | 21 ++++++++++++++------- src/gui/UBTeacherGuideWidget.h | 2 ++ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/gui/UBTeacherGuideWidget.cpp b/src/gui/UBTeacherGuideWidget.cpp index a18edc4e..77c692a5 100644 --- a/src/gui/UBTeacherGuideWidget.cpp +++ b/src/gui/UBTeacherGuideWidget.cpp @@ -676,18 +676,16 @@ UBTeacherGuidePageZeroWidget::UBTeacherGuidePageZeroWidget(QWidget* parent, cons mpPageNumberLabel->setText(tr("Title page")); mpLayout->addWidget(mpPageNumberLabel); - mpScrollArea = new QScrollArea(); mpContainerWidget = new QWidget(); mpContainerWidgetLayout = new QVBoxLayout(); - mpLayout->addWidget(mpScrollArea); mpScrollArea->setWidget(mpContainerWidget); mpScrollArea->setWidgetResizable(true); + mpScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); mpContainerWidget->setLayout(mpContainerWidgetLayout); - mpButtonTitleLayout = new QHBoxLayout(0); mpModePushButton = new QPushButton(this); @@ -774,6 +772,7 @@ UBTeacherGuidePageZeroWidget::UBTeacherGuidePageZeroWidget(QWidget* parent, cons mpContainerWidgetLayout->addWidget(mpSchoolLevelItemLabel); mpSchoolLevelBox = new QComboBox(this); mpSchoolLevelBox->setMinimumHeight(22); + mpSchoolLevelBox->setMinimumWidth(LOWER_RESIZE_WIDTH); mpSchoolLevelBox->setObjectName("DockPaletteWidgetComboBox"); connect(mpSchoolLevelBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(onSchoolLevelChanged(QString))); mpContainerWidgetLayout->addWidget(mpSchoolLevelBox); @@ -787,6 +786,7 @@ UBTeacherGuidePageZeroWidget::UBTeacherGuidePageZeroWidget(QWidget* parent, cons mpContainerWidgetLayout->addWidget(mpSchoolSubjectsItemLabel); mpSchoolSubjectsBox = new QComboBox(this); mpSchoolSubjectsBox->setMinimumHeight(22); + mpSchoolSubjectsBox->setMinimumWidth(LOWER_RESIZE_WIDTH); mpSchoolSubjectsBox->setObjectName("DockPaletteWidgetComboBox"); mpContainerWidgetLayout->addWidget(mpSchoolSubjectsBox); mpSchoolSubjectsValueLabel = new QLabel(this); @@ -799,6 +799,7 @@ UBTeacherGuidePageZeroWidget::UBTeacherGuidePageZeroWidget(QWidget* parent, cons mpContainerWidgetLayout->addWidget(mpSchoolTypeItemLabel); mpSchoolTypeBox = new QComboBox(this); mpSchoolTypeBox->setMinimumHeight(22); + mpSchoolTypeBox->setMinimumWidth(LOWER_RESIZE_WIDTH); mpSchoolTypeBox->setObjectName("DockPaletteWidgetComboBox"); mpContainerWidgetLayout->addWidget(mpSchoolTypeBox); mpSchoolTypeValueLabel = new QLabel(this); @@ -816,12 +817,15 @@ UBTeacherGuidePageZeroWidget::UBTeacherGuidePageZeroWidget(QWidget* parent, cons mpContainerWidgetLayout->addWidget(mpLicenceLabel); mpLicenceBox = new QComboBox(this); mpLicenceBox->setMinimumHeight(22); + mpLicenceBox->setMinimumWidth(LOWER_RESIZE_WIDTH); mpLicenceBox->setObjectName("DockPaletteWidgetComboBox"); mpContainerWidgetLayout->addWidget(mpLicenceBox); mpLicenceLayout = new QHBoxLayout(0); mpLicenceIcon = new QLabel(this); + mpLicenceIcon->setMinimumWidth(LOWER_RESIZE_WIDTH/2); mpLicenceLayout->addWidget(mpLicenceIcon); mpLicenceValueLabel = new QLabel(this); + mpLicenceValueLabel->setMinimumWidth(LOWER_RESIZE_WIDTH/2); mpLicenceLayout->addWidget(mpLicenceValueLabel); mpContainerWidgetLayout->addLayout(mpLicenceLayout); mpContainerWidgetLayout->addStretch(1); @@ -941,7 +945,8 @@ void UBTeacherGuidePageZeroWidget::onSchoolLevelChanged(QString schoolLevel) mpSchoolSubjectsItemLabel->setEnabled(true); mpSchoolSubjectsBox->setEnabled(true); mpSchoolSubjectsBox->addItems(subjects); - } else { + } + else { mpSchoolSubjectsItemLabel->setDisabled(true); mpSchoolSubjectsBox->setDisabled(true); } @@ -1144,10 +1149,12 @@ bool UBTeacherGuidePageZeroWidget::isModified() return result; } -void UBTeacherGuidePageZeroWidget::resizeEvent(QResizeEvent* ev){ +void UBTeacherGuidePageZeroWidget::resizeEvent(QResizeEvent* ev) +{ emit resized(); - - QWidget::resizeEvent(ev); +/* mpScrollArea->resize(width(), height()); + mpContainerWidget->resize(width(), height()); +*/ QWidget::resizeEvent(ev); } /*************************************************************************** diff --git a/src/gui/UBTeacherGuideWidget.h b/src/gui/UBTeacherGuideWidget.h index 60e5ab04..87cd081b 100644 --- a/src/gui/UBTeacherGuideWidget.h +++ b/src/gui/UBTeacherGuideWidget.h @@ -35,6 +35,8 @@ typedef enum tUBTGZeroPageMode_PRESENTATION }tUBTGZeroPageMode; +#define LOWER_RESIZE_WIDTH 50 + /*************************************************************************** * class UBTeacherGuideEditionWidget * ***************************************************************************/ From eb53715d6c51cb646d8ddce5f3e11327b135d27a Mon Sep 17 00:00:00 2001 From: Ilia Ryabokon Date: Tue, 4 Sep 2012 15:28:41 +0300 Subject: [PATCH 08/29] Eraising elements --- src/api/UBWidgetUniboardAPI.cpp | 2 +- src/board/UBBoardController.cpp | 8 +- src/desktop/UBDesktopAnnotationController.cpp | 2 +- src/domain/UBGraphicsGroupContainerItem.cpp | 5 +- src/domain/UBGraphicsItemDelegate.cpp | 19 ++- src/domain/UBGraphicsItemDelegate.h | 1 + src/domain/UBGraphicsScene.cpp | 152 ++++++------------ src/domain/UBGraphicsScene.h | 12 +- src/domain/UBGraphicsTextItemDelegate.cpp | 9 +- src/domain/UBGraphicsTextItemDelegate.h | 1 + src/domain/UBItem.cpp | 43 +++++ src/domain/UBItem.h | 1 + 12 files changed, 136 insertions(+), 119 deletions(-) diff --git a/src/api/UBWidgetUniboardAPI.cpp b/src/api/UBWidgetUniboardAPI.cpp index 0e2a54f1..b86e7aa1 100644 --- a/src/api/UBWidgetUniboardAPI.cpp +++ b/src/api/UBWidgetUniboardAPI.cpp @@ -250,7 +250,7 @@ void UBWidgetUniboardAPI::eraseLineTo(const qreal x, const qreal y, const qreal void UBWidgetUniboardAPI::clear() { if (mScene) - mScene->clearItemsAndAnnotations(); + mScene->clearContent(UBGraphicsScene::clearItemsAndAnnotations); } diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index a9600ab6..ea627e3f 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -683,7 +683,7 @@ void UBBoardController::clearScene() if (mActiveScene) { freezeW3CWidgets(true); - mActiveScene->clearItemsAndAnnotations(); + mActiveScene->clearContent(UBGraphicsScene::clearItemsAndAnnotations); updateActionStates(); } } @@ -694,7 +694,7 @@ void UBBoardController::clearSceneItems() if (mActiveScene) { freezeW3CWidgets(true); - mActiveScene->clearItems(); + mActiveScene->clearContent(UBGraphicsScene::clearItems); updateActionStates(); } } @@ -704,7 +704,7 @@ void UBBoardController::clearSceneAnnotation() { if (mActiveScene) { - mActiveScene->clearAnnotations(); + mActiveScene->clearContent(UBGraphicsScene::clearAnnotations); updateActionStates(); } } @@ -713,7 +713,7 @@ void UBBoardController::clearSceneBackground() { if (mActiveScene) { - mActiveScene->clearBackground(); + mActiveScene->clearContent(UBGraphicsScene::clearBackground); updateActionStates(); } } diff --git a/src/desktop/UBDesktopAnnotationController.cpp b/src/desktop/UBDesktopAnnotationController.cpp index e86dca46..b95b433d 100644 --- a/src/desktop/UBDesktopAnnotationController.cpp +++ b/src/desktop/UBDesktopAnnotationController.cpp @@ -274,7 +274,7 @@ void UBDesktopAnnotationController::eraseDesktopAnnotations() { if (mTransparentDrawingScene) { - mTransparentDrawingScene->clearAnnotations(); + mTransparentDrawingScene->clearContent(UBGraphicsScene::clearAnnotations); } } diff --git a/src/domain/UBGraphicsGroupContainerItem.cpp b/src/domain/UBGraphicsGroupContainerItem.cpp index 95b95af3..818eb88e 100644 --- a/src/domain/UBGraphicsGroupContainerItem.cpp +++ b/src/domain/UBGraphicsGroupContainerItem.cpp @@ -78,7 +78,10 @@ void UBGraphicsGroupContainerItem::addToGroup(QGraphicsItem *item) QTransform newItemTransform(itemTransform); item->setPos(mapFromItem(item, 0, 0)); - item->scene()->removeItem(item); + if (item->scene()) { + item->scene()->removeItem(item); + } + if (corescene()) corescene()->removeItemFromDeletion(item); item->setParentItem(this); diff --git a/src/domain/UBGraphicsItemDelegate.cpp b/src/domain/UBGraphicsItemDelegate.cpp index 6c0349e4..d5620d12 100644 --- a/src/domain/UBGraphicsItemDelegate.cpp +++ b/src/domain/UBGraphicsItemDelegate.cpp @@ -387,12 +387,25 @@ void UBGraphicsItemDelegate::remove(bool canUndo) UBGraphicsScene* scene = dynamic_cast(mDelegated->scene()); if (scene) { - foreach(DelegateButton* button, mButtons) - scene->removeItem(button); +// bool shownOnDisplay = mDelegated->data(UBGraphicsItemData::ItemLayerType).toInt() != UBItemLayerType::Control; +// showHide(shownOnDisplay); +// updateFrame(); +// updateButtons(); + + if (mFrame && !mFrame->scene() && mDelegated->scene()) + { + mDelegated->scene()->addItem(mFrame); + } + mFrame->setAntiScale(mAntiScaleRatio); + mFrame->positionHandles(); + updateButtons(true); + foreach(DelegateButton* button, mButtons) { + scene->removeItem(button); + } scene->removeItem(mFrame); - /* this is performed because when removing delegated from scene while it contains flash content, segfault happens because of QGraphicsScene::removeItem() */ + /* this is performed because when removing delegated from scene while it contains flash content, segfault happens because of QGraphicsScene::removeItem() */ UBGraphicsWebView *mDelegated_casted = dynamic_cast(mDelegated); if (mDelegated_casted) mDelegated_casted->setHtml(QString()); diff --git a/src/domain/UBGraphicsItemDelegate.h b/src/domain/UBGraphicsItemDelegate.h index c782c94b..01ef854b 100644 --- a/src/domain/UBGraphicsItemDelegate.h +++ b/src/domain/UBGraphicsItemDelegate.h @@ -244,6 +244,7 @@ class UBGraphicsItemDelegate : public QObject UBGraphicsToolBarItem* getToolBarItem() const { return mToolBarItem; } qreal antiScaleRatio() const { return mAntiScaleRatio; } + virtual void update() {positionHandles();} signals: void showOnDisplayChanged(bool shown); diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index d5eb8d36..c60257ab 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -1071,115 +1071,72 @@ UBItem* UBGraphicsScene::deepCopy() const return sceneDeepCopy(); } -void UBGraphicsScene::clearItemsAndAnnotations() +void UBGraphicsScene::clearContent(clearCase pCase) { - deselectAllItems(); - - QSet emptyList; - QSet removedItems; - - QList sceneItems = items(); - foreach(QGraphicsItem* item, sceneItems) - { - if(!mTools.contains(item) && !isBackgroundObject(item)) - { - removeItem(item); - removedItems << item; - } - } - - // force refresh, QT is a bit lazy and take a lot of time (nb item ^2 ?) to trigger repaint - update(sceneRect()); - - if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented - UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, removedItems, emptyList); - UBApplication::undoStack->push(uc); - } - - setDocumentUpdated(); -} - -bool isService(QGraphicsItem *item) { - return (item->type() == UBGraphicsDelegateFrame::Type) - || (item->parentItem() && item->parentItem()->Type == UBGraphicsDelegateFrame::Type); -} - -void UBGraphicsScene::clearItems() -{ - deselectAllItems(); - - QSet emptyList; QSet removedItems; - QList sceneItems = items(); - foreach(QGraphicsItem* item, sceneItems) - { - bool isGroup = qgraphicsitem_cast(item) != NULL; - bool isPolygon = qgraphicsitem_cast(item) != NULL; - bool isStrokesGroup = qgraphicsitem_cast(item) != NULL; - - bool inGroup = (item->parentItem() - && (item->parentItem()->type() == UBGraphicsGroupContainerItem::Type)); - - if(!isGroup && !isPolygon && !isStrokesGroup && !mTools.contains(item) && !isBackgroundObject(item)) { - removeItem(item); - } - if (!inGroup || !isService(item)) { - removedItems << item; - } - } - - // force refresh, QT is a bit lazy and take a lot of time (nb item ^2 ?) to trigger repaint - update(sceneRect()); - - - if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented - UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, removedItems, emptyList); - UBApplication::undoStack->push(uc); - } + switch (pCase) { + case clearBackground : + removeItem(mBackgroundObject); + removedItems << mBackgroundObject; + break; + + case clearItemsAndAnnotations : + case clearItems : + case clearAnnotations : + foreach(QGraphicsItem* item, items()) { + + bool isGroup = item->type() == UBGraphicsGroupContainerItem::Type; + bool isStrokesGroup = item->type() == UBGraphicsStrokesGroup::Type; + + UBGraphicsGroupContainerItem *itemGroup = item->parentItem() + ? qgraphicsitem_cast(item->parentItem()) + : 0; + UBGraphicsItemDelegate *curDelegate = UBGraphicsItem::Delegate(item); + if (!curDelegate) { + continue; + } - setDocumentUpdated(); -} + bool shouldDelete = false; + switch (static_cast(pCase)) { + case clearAnnotations : + shouldDelete = isStrokesGroup; + break; + case clearItems : + shouldDelete = !isGroup && !isBackgroundObject(item) && !isStrokesGroup; + break; + case clearItemsAndAnnotations: + shouldDelete = !isGroup && !isBackgroundObject(item); + break; + } -void UBGraphicsScene::clearAnnotations() -{ - QSet emptyList; - QSet removedItems; + if(shouldDelete) { + if (itemGroup) { + itemGroup->removeFromGroup(item); + if (itemGroup->childItems().count() == 1) { + itemGroup->destroy(); + } + itemGroup->Delegate()->update(); + } - QList sceneItems = items(); - foreach(QGraphicsItem* item, sceneItems) - { - UBGraphicsStrokesGroup* pi = qgraphicsitem_cast(item); - if (pi) - { - removeItem(item); - removedItems << item; + curDelegate->remove(false); + removedItems << item; + } } + break; } // force refresh, QT is a bit lazy and take a lot of time (nb item ^2 ?) to trigger repaint update(sceneRect()); if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented - UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, removedItems, emptyList); + UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, removedItems, QSet()); UBApplication::undoStack->push(uc); } - setDocumentUpdated(); -} - -void UBGraphicsScene::clearBackground() -{ - if(mBackgroundObject){ - removeItem(mBackgroundObject); - - if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented - UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, mBackgroundObject, NULL); - UBApplication::undoStack->push(uc); - } + if (pCase == clearBackground) { mBackgroundObject = 0; } - update(sceneRect()); setDocumentUpdated(); } @@ -1373,8 +1330,8 @@ UBGraphicsW3CWidgetItem* UBGraphicsScene::addOEmbed(const QUrl& pContentUrl, con UBGraphicsGroupContainerItem *UBGraphicsScene::createGroup(QList items) { UBGraphicsGroupContainerItem *groupItem = new UBGraphicsGroupContainerItem(); - addItem(groupItem); + addItem(groupItem); foreach (QGraphicsItem *item, items) { if (item->type() == UBGraphicsGroupContainerItem::Type) { QList childItems = item->childItems(); @@ -1609,8 +1566,6 @@ void UBGraphicsScene::addItems(const QSet& items) void UBGraphicsScene::removeItem(QGraphicsItem* item) { - UBGraphicsGroupContainerItem* group = qgraphicsitem_cast(item->parentItem()); - item->setSelected(false); UBCoreGraphicsScene::removeItem(item); UBApplication::boardController->freezeW3CWidget(item, true); @@ -1619,15 +1574,6 @@ void UBGraphicsScene::removeItem(QGraphicsItem* item) --mItemCount; mFastAccessItems.removeAll(item); - -// if (group) -// { -// if (group->childItems().empty()) -// { -// group->Delegate()->remove(); -// UBCoreGraphicsScene::removeItemFromDeletion(group); -// } -// } } void UBGraphicsScene::removeItems(const QSet& items) diff --git a/src/domain/UBGraphicsScene.h b/src/domain/UBGraphicsScene.h index 6f8c8def..0dedb9c1 100644 --- a/src/domain/UBGraphicsScene.h +++ b/src/domain/UBGraphicsScene.h @@ -101,6 +101,13 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem public: + enum clearCase { + clearItemsAndAnnotations = 0 + , clearAnnotations + , clearItems + , clearBackground + }; + // tmp stub for divide addings scene objects from undo mechanism implementation void setURStackEnable(bool set = true) {enableUndoRedoStack = set;} bool isURStackIsEnabled(){ return enableUndoRedoStack;} @@ -114,10 +121,7 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem UBGraphicsScene* sceneDeepCopy() const; - void clearItemsAndAnnotations(); - void clearItems(); - void clearAnnotations(); - void clearBackground(); + void clearContent(clearCase pCase = clearItemsAndAnnotations); bool inputDevicePress(const QPointF& scenePos, const qreal& pressure = 1.0); bool inputDeviceMove(const QPointF& scenePos, const qreal& pressure = 1.0); diff --git a/src/domain/UBGraphicsTextItemDelegate.cpp b/src/domain/UBGraphicsTextItemDelegate.cpp index 6e7e730e..9f7b5fdb 100644 --- a/src/domain/UBGraphicsTextItemDelegate.cpp +++ b/src/domain/UBGraphicsTextItemDelegate.cpp @@ -263,6 +263,11 @@ void UBGraphicsTextItemDelegate::setEditable(bool editable) mDelegated->setData(UBGraphicsItemData::ItemEditable, QVariant(false)); } } +void UBGraphicsTextItemDelegate::remove(bool canUndo) +{ + UBGraphicsItemDelegate::remove(canUndo); +} + bool UBGraphicsTextItemDelegate::isEditable() { return mDelegated->data(UBGraphicsItemData::ItemEditable).toBool(); @@ -419,8 +424,8 @@ QVariant UBGraphicsTextItemDelegate::itemChange(QGraphicsItem::GraphicsItemChang QTextCursor c = delegated()->textCursor(); if (c.hasSelection()) { - c.clearSelection(); - delegated()->setTextCursor(c); + c.clearSelection(); + delegated()->setTextCursor(c); } } } diff --git a/src/domain/UBGraphicsTextItemDelegate.h b/src/domain/UBGraphicsTextItemDelegate.h index 26b3ba9b..2cf6f447 100644 --- a/src/domain/UBGraphicsTextItemDelegate.h +++ b/src/domain/UBGraphicsTextItemDelegate.h @@ -46,6 +46,7 @@ class UBGraphicsTextItemDelegate : public UBGraphicsItemDelegate public slots: void contentsChanged(); virtual void setEditable(bool); + virtual void remove(bool canUndo); protected: virtual void buildButtons(); diff --git a/src/domain/UBItem.cpp b/src/domain/UBItem.cpp index 9d999a94..10d3d6ce 100644 --- a/src/domain/UBItem.cpp +++ b/src/domain/UBItem.cpp @@ -17,6 +17,15 @@ #include "core/memcheck.h" +#include "domain/UBGraphicsPixmapItem.h" +#include "domain/UBGraphicsTextItem.h" +#include "domain/UBGraphicsSvgItem.h" +#include "domain/UBGraphicsMediaItem.h" +#include "domain/UBGraphicsStrokesGroup.h" +#include "domain/UBGraphicsGroupContainerItem.h" +#include "domain/UBGraphicsWidgetItem.h" +#include "tools/UBGraphicsCurtainItem.h" + UBItem::UBItem() : mUuid(QUuid()) , mRenderingQuality(UBItem::RenderingQualityNormal) @@ -44,3 +53,37 @@ bool UBGraphicsItem::isRotatable(QGraphicsItem *item) { return item->data(UBGraphicsItemData::ItemRotatable).toBool(); } + +UBGraphicsItemDelegate *UBGraphicsItem::Delegate(QGraphicsItem *pItem) +{ + UBGraphicsItemDelegate *result = 0; + + switch (static_cast(pItem->type())) { + case UBGraphicsPixmapItem::Type : + result = (static_cast(pItem))->Delegate(); + break; + case UBGraphicsTextItem::Type : + result = (static_cast(pItem))->Delegate(); + break; + case UBGraphicsSvgItem::Type : + result = (static_cast(pItem))->Delegate(); + break; + case UBGraphicsMediaItem::Type: + result = (static_cast(pItem))->Delegate(); + break; + case UBGraphicsStrokesGroup::Type : + result = (static_cast(pItem))->Delegate(); + break; + case UBGraphicsGroupContainerItem::Type : + result = (static_cast(pItem))->Delegate(); + break; + case UBGraphicsWidgetItem::Type : + result = (static_cast(pItem))->Delegate(); + break; + case UBGraphicsCurtainItem::Type : + result = (static_cast(pItem))->Delegate(); + break; + } + + return result; +} diff --git a/src/domain/UBItem.h b/src/domain/UBItem.h index 99c3e6a6..ca8a0f3b 100644 --- a/src/domain/UBItem.h +++ b/src/domain/UBItem.h @@ -108,6 +108,7 @@ public: static bool isRotatable(QGraphicsItem *item); static bool isFlippable(QGraphicsItem *item); + static UBGraphicsItemDelegate *Delegate(QGraphicsItem *pItem); virtual UBGraphicsItemDelegate *Delegate() const = 0; virtual void remove() = 0; From 5f30e45d97918a8b006ed3c6f97588f2b49aef8f Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Tue, 4 Sep 2012 17:53:33 +0300 Subject: [PATCH 09/29] SANKORE-523 Changing the languages of the virtual keyboard crashes the software --- src/frameworks/UBPlatformUtils_mac.mm | 5 +++++ src/gui/UBKeyboardPalette_mac.cpp | 1 + 2 files changed, 6 insertions(+) diff --git a/src/frameworks/UBPlatformUtils_mac.mm b/src/frameworks/UBPlatformUtils_mac.mm index 66191a95..d62e9f2e 100644 --- a/src/frameworks/UBPlatformUtils_mac.mm +++ b/src/frameworks/UBPlatformUtils_mac.mm @@ -440,6 +440,9 @@ void UBPlatformUtils::initializeKeyboardLayouts() int count = CFArrayGetCount(kbds); QList result; + qDebug() << "initializeKeyboardLayouts"; + qDebug() << "Found system locales: " << count; + for(int i=0; i Date: Tue, 4 Sep 2012 18:04:18 +0300 Subject: [PATCH 10/29] SANKORE-523 Changing the languages of the virtual keyboard crashes the software --- src/frameworks/UBPlatformUtils.h | 40 ++++++++++++++---------- src/frameworks/UBPlatformUtils_linux.cpp | 10 +++--- src/frameworks/UBPlatformUtils_win.cpp | 15 ++++++--- 3 files changed, 39 insertions(+), 26 deletions(-) diff --git a/src/frameworks/UBPlatformUtils.h b/src/frameworks/UBPlatformUtils.h index ebac3995..29af417e 100644 --- a/src/frameworks/UBPlatformUtils.h +++ b/src/frameworks/UBPlatformUtils.h @@ -19,6 +19,11 @@ #include #include +#ifdef Q_WS_MACX + #import +#endif + + class QMainWindow; #define SYMBOL_KEYS_COUNT 47 @@ -125,28 +130,31 @@ struct KEYBT class UBKeyboardLocale { public: - UBKeyboardLocale(const QString& _fullName, - const QString& _name, - const QString& _id, - QIcon* _icon, - KEYBT** _symbols) - :fullName(_fullName),name(_name), id(_id), icon(_icon), - constSymbols(NULL), varSymbols(_symbols) - {} - UBKeyboardLocale(const QString& _fullName, - const QString& _name, - const QString& _id, - QIcon* _icon, - KEYBT _symbols[]) - :fullName(_fullName),name(_name), id(_id), icon(_icon), + #ifdef Q_WS_MACX + UBKeyboardLocale(const QString& _fullName, + const QString& _name, + TISInputSourceRef _tisInputSourceRef, + QIcon* _icon, + KEYBT** _symbols) + :fullName(_fullName),name(_name), tisInputSourceRef(_tisInputSourceRef), + icon(_icon),constSymbols(NULL), varSymbols(_symbols) + {} + + TISInputSourceRef tisInputSourceRef; + #else + UBKeyboardLocale(const QString& _fullName, + const QString& _name, + QIcon* _icon, + KEYBT _symbols[]) + :fullName(_fullName),name(_name), icon(_icon), constSymbols(_symbols), varSymbols(NULL) - {} + {} + #endif ~UBKeyboardLocale(); const QString fullName; const QString name; - const QString id; QIcon* icon; KEYBT* operator[] (int index) const { diff --git a/src/frameworks/UBPlatformUtils_linux.cpp b/src/frameworks/UBPlatformUtils_linux.cpp index 8c10c4c9..411d812a 100644 --- a/src/frameworks/UBPlatformUtils_linux.cpp +++ b/src/frameworks/UBPlatformUtils_linux.cpp @@ -399,11 +399,11 @@ void UBPlatformUtils::initializeKeyboardLayouts() { nKeyboardLayouts = 5; keyboardLayouts = new UBKeyboardLocale*[nKeyboardLayouts]; - keyboardLayouts[0] = new UBKeyboardLocale(tr("English"), "en", "", new QIcon(":/images/flags/en.png"), ENGLISH_LOCALE); - keyboardLayouts[1] = new UBKeyboardLocale(tr("Russian"), "ru", "", new QIcon(":/images/flags/ru.png"),RUSSIAN_LOCALE); - keyboardLayouts[2] = new UBKeyboardLocale(tr("German"), "de", "", new QIcon(":/images/flags/de.png"), GERMAN_LOCALE); - keyboardLayouts[3] = new UBKeyboardLocale(tr("French"), "fr", "", new QIcon(":/images/flags/fr.png"), FRENCH_LOCALE); - keyboardLayouts[4] = new UBKeyboardLocale(tr("Swiss French"), "fr-CH", "", new QIcon(":/images/flags/fr.png"), SWISS_FRENCH_LOCALE); + keyboardLayouts[0] = new UBKeyboardLocale(tr("English"), "en", new QIcon(":/images/flags/en.png"), ENGLISH_LOCALE); + keyboardLayouts[1] = new UBKeyboardLocale(tr("Russian"), "ru", new QIcon(":/images/flags/ru.png"),RUSSIAN_LOCALE); + keyboardLayouts[2] = new UBKeyboardLocale(tr("German"), "de", new QIcon(":/images/flags/de.png"), GERMAN_LOCALE); + keyboardLayouts[3] = new UBKeyboardLocale(tr("French"), "fr", new QIcon(":/images/flags/fr.png"), FRENCH_LOCALE); + keyboardLayouts[4] = new UBKeyboardLocale(tr("Swiss French"), "fr-CH", new QIcon(":/images/flags/fr.png"), SWISS_FRENCH_LOCALE); } void UBPlatformUtils::destroyKeyboardLayouts() diff --git a/src/frameworks/UBPlatformUtils_win.cpp b/src/frameworks/UBPlatformUtils_win.cpp index 95a6970e..f7c67f8b 100644 --- a/src/frameworks/UBPlatformUtils_win.cpp +++ b/src/frameworks/UBPlatformUtils_win.cpp @@ -407,11 +407,16 @@ void UBPlatformUtils::initializeKeyboardLayouts() { nKeyboardLayouts = 5; keyboardLayouts = new UBKeyboardLocale*[nKeyboardLayouts]; - keyboardLayouts[0] = new UBKeyboardLocale(tr("English"), "en", "", new QIcon(":/images/flags/en.png"), ENGLISH_LOCALE); - keyboardLayouts[1] = new UBKeyboardLocale(tr("Russian"), "ru", "", new QIcon(":/images/flags/ru.png"),RUSSIAN_LOCALE); - keyboardLayouts[2] = new UBKeyboardLocale(tr("French"), "fr", "", new QIcon(":/images/flags/fr.png"), FRENCH_LOCALE); - keyboardLayouts[3] = new UBKeyboardLocale(tr("Swiss French"), "fr-CH", "", new QIcon(":/images/flags/fr.png"), SWISS_FRENCH_LOCALE); - keyboardLayouts[4] = new UBKeyboardLocale(tr("German"), "de", "", new QIcon(":/images/flags/de.png"), GERMAN_LOCALE); + keyboardLayouts[0] = new UBKeyboardLocale(tr("English"),"en", + new QIcon(":/images/flags/en.png"), ENGLISH_LOCALE); + keyboardLayouts[1] = new UBKeyboardLocale(tr("Russian"), "ru", + new QIcon(":/images/flags/ru.png"),RUSSIAN_LOCALE); + keyboardLayouts[2] = new UBKeyboardLocale(tr("French"), "fr", + new QIcon(":/images/flags/fr.png"), FRENCH_LOCALE); + keyboardLayouts[3] = new UBKeyboardLocale(tr("Swiss French"), "fr-CH", + new QIcon(":/images/flags/fr.png"), SWISS_FRENCH_LOCALE); + keyboardLayouts[4] = new UBKeyboardLocale(tr("German"), "de", + new QIcon(":/images/flags/de.png"), GERMAN_LOCALE); } void UBPlatformUtils::destroyKeyboardLayouts() From 34c6aa28a98b2adef9f35681f0e5fea4908c9341 Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Tue, 4 Sep 2012 19:58:18 +0300 Subject: [PATCH 11/29] Reversed changed... --- src/frameworks/UBPlatformUtils.h | 40 ++++++++++-------------- src/frameworks/UBPlatformUtils_linux.cpp | 10 +++--- src/frameworks/UBPlatformUtils_win.cpp | 15 +++------ 3 files changed, 26 insertions(+), 39 deletions(-) diff --git a/src/frameworks/UBPlatformUtils.h b/src/frameworks/UBPlatformUtils.h index 29af417e..ebac3995 100644 --- a/src/frameworks/UBPlatformUtils.h +++ b/src/frameworks/UBPlatformUtils.h @@ -19,11 +19,6 @@ #include #include -#ifdef Q_WS_MACX - #import -#endif - - class QMainWindow; #define SYMBOL_KEYS_COUNT 47 @@ -130,31 +125,28 @@ struct KEYBT class UBKeyboardLocale { public: - #ifdef Q_WS_MACX - UBKeyboardLocale(const QString& _fullName, - const QString& _name, - TISInputSourceRef _tisInputSourceRef, - QIcon* _icon, - KEYBT** _symbols) - :fullName(_fullName),name(_name), tisInputSourceRef(_tisInputSourceRef), - icon(_icon),constSymbols(NULL), varSymbols(_symbols) - {} - - TISInputSourceRef tisInputSourceRef; - #else - UBKeyboardLocale(const QString& _fullName, - const QString& _name, - QIcon* _icon, - KEYBT _symbols[]) - :fullName(_fullName),name(_name), icon(_icon), + UBKeyboardLocale(const QString& _fullName, + const QString& _name, + const QString& _id, + QIcon* _icon, + KEYBT** _symbols) + :fullName(_fullName),name(_name), id(_id), icon(_icon), + constSymbols(NULL), varSymbols(_symbols) + {} + UBKeyboardLocale(const QString& _fullName, + const QString& _name, + const QString& _id, + QIcon* _icon, + KEYBT _symbols[]) + :fullName(_fullName),name(_name), id(_id), icon(_icon), constSymbols(_symbols), varSymbols(NULL) - {} - #endif + {} ~UBKeyboardLocale(); const QString fullName; const QString name; + const QString id; QIcon* icon; KEYBT* operator[] (int index) const { diff --git a/src/frameworks/UBPlatformUtils_linux.cpp b/src/frameworks/UBPlatformUtils_linux.cpp index 411d812a..8c10c4c9 100644 --- a/src/frameworks/UBPlatformUtils_linux.cpp +++ b/src/frameworks/UBPlatformUtils_linux.cpp @@ -399,11 +399,11 @@ void UBPlatformUtils::initializeKeyboardLayouts() { nKeyboardLayouts = 5; keyboardLayouts = new UBKeyboardLocale*[nKeyboardLayouts]; - keyboardLayouts[0] = new UBKeyboardLocale(tr("English"), "en", new QIcon(":/images/flags/en.png"), ENGLISH_LOCALE); - keyboardLayouts[1] = new UBKeyboardLocale(tr("Russian"), "ru", new QIcon(":/images/flags/ru.png"),RUSSIAN_LOCALE); - keyboardLayouts[2] = new UBKeyboardLocale(tr("German"), "de", new QIcon(":/images/flags/de.png"), GERMAN_LOCALE); - keyboardLayouts[3] = new UBKeyboardLocale(tr("French"), "fr", new QIcon(":/images/flags/fr.png"), FRENCH_LOCALE); - keyboardLayouts[4] = new UBKeyboardLocale(tr("Swiss French"), "fr-CH", new QIcon(":/images/flags/fr.png"), SWISS_FRENCH_LOCALE); + keyboardLayouts[0] = new UBKeyboardLocale(tr("English"), "en", "", new QIcon(":/images/flags/en.png"), ENGLISH_LOCALE); + keyboardLayouts[1] = new UBKeyboardLocale(tr("Russian"), "ru", "", new QIcon(":/images/flags/ru.png"),RUSSIAN_LOCALE); + keyboardLayouts[2] = new UBKeyboardLocale(tr("German"), "de", "", new QIcon(":/images/flags/de.png"), GERMAN_LOCALE); + keyboardLayouts[3] = new UBKeyboardLocale(tr("French"), "fr", "", new QIcon(":/images/flags/fr.png"), FRENCH_LOCALE); + keyboardLayouts[4] = new UBKeyboardLocale(tr("Swiss French"), "fr-CH", "", new QIcon(":/images/flags/fr.png"), SWISS_FRENCH_LOCALE); } void UBPlatformUtils::destroyKeyboardLayouts() diff --git a/src/frameworks/UBPlatformUtils_win.cpp b/src/frameworks/UBPlatformUtils_win.cpp index f7c67f8b..95a6970e 100644 --- a/src/frameworks/UBPlatformUtils_win.cpp +++ b/src/frameworks/UBPlatformUtils_win.cpp @@ -407,16 +407,11 @@ void UBPlatformUtils::initializeKeyboardLayouts() { nKeyboardLayouts = 5; keyboardLayouts = new UBKeyboardLocale*[nKeyboardLayouts]; - keyboardLayouts[0] = new UBKeyboardLocale(tr("English"),"en", - new QIcon(":/images/flags/en.png"), ENGLISH_LOCALE); - keyboardLayouts[1] = new UBKeyboardLocale(tr("Russian"), "ru", - new QIcon(":/images/flags/ru.png"),RUSSIAN_LOCALE); - keyboardLayouts[2] = new UBKeyboardLocale(tr("French"), "fr", - new QIcon(":/images/flags/fr.png"), FRENCH_LOCALE); - keyboardLayouts[3] = new UBKeyboardLocale(tr("Swiss French"), "fr-CH", - new QIcon(":/images/flags/fr.png"), SWISS_FRENCH_LOCALE); - keyboardLayouts[4] = new UBKeyboardLocale(tr("German"), "de", - new QIcon(":/images/flags/de.png"), GERMAN_LOCALE); + keyboardLayouts[0] = new UBKeyboardLocale(tr("English"), "en", "", new QIcon(":/images/flags/en.png"), ENGLISH_LOCALE); + keyboardLayouts[1] = new UBKeyboardLocale(tr("Russian"), "ru", "", new QIcon(":/images/flags/ru.png"),RUSSIAN_LOCALE); + keyboardLayouts[2] = new UBKeyboardLocale(tr("French"), "fr", "", new QIcon(":/images/flags/fr.png"), FRENCH_LOCALE); + keyboardLayouts[3] = new UBKeyboardLocale(tr("Swiss French"), "fr-CH", "", new QIcon(":/images/flags/fr.png"), SWISS_FRENCH_LOCALE); + keyboardLayouts[4] = new UBKeyboardLocale(tr("German"), "de", "", new QIcon(":/images/flags/de.png"), GERMAN_LOCALE); } void UBPlatformUtils::destroyKeyboardLayouts() From ff6332a66f71cdc4379e2233243848cc521a876c Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Wed, 5 Sep 2012 12:34:04 +0300 Subject: [PATCH 12/29] Virtual Keyboard under Mac OS 10.7: switching locales --- src/frameworks/UBPlatformUtils.h | 5 +++++ src/frameworks/UBPlatformUtils_mac.mm | 25 +++++++++++++++++++++++++ src/gui/UBKeyboardPalette_mac.cpp | 19 +------------------ 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/src/frameworks/UBPlatformUtils.h b/src/frameworks/UBPlatformUtils.h index ebac3995..46acb6f6 100644 --- a/src/frameworks/UBPlatformUtils.h +++ b/src/frameworks/UBPlatformUtils.h @@ -171,6 +171,7 @@ class UBPlatformUtils static int nKeyboardLayouts; static UBKeyboardLocale** keyboardLayouts; + public: static void init(); static void destroy(); @@ -192,6 +193,10 @@ public: static UBKeyboardLocale** getKeyboardLayouts(int& nCount); static QString urlFromClipboard(); static QStringList availableTranslations(); + +#ifdef Q_WS_MAC + static void SetMacLocaleByIdentifier(const QString& id); +#endif }; diff --git a/src/frameworks/UBPlatformUtils_mac.mm b/src/frameworks/UBPlatformUtils_mac.mm index d62e9f2e..72dcb75c 100644 --- a/src/frameworks/UBPlatformUtils_mac.mm +++ b/src/frameworks/UBPlatformUtils_mac.mm @@ -570,3 +570,28 @@ QString UBPlatformUtils::urlFromClipboard() */ return qsRet; } + + +void UBPlatformUtils::SetMacLocaleByIdentifier(const QString& id) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + + const char * strName = id.toAscii().data(); + + CFStringRef iName = CFStringCreateWithCString(NULL, strName, kCFStringEncodingMacRoman ); + + CFStringRef keys[] = { kTISPropertyInputSourceCategory, kTISPropertyInputSourceID }; + CFStringRef values[] = { kTISCategoryKeyboardInputSource, iName }; + CFDictionaryRef dict = CFDictionaryCreate(NULL, (const void **)keys, (const void **)values, 2, NULL, NULL); + CFArrayRef kbds = TISCreateInputSourceList(dict, true); + if (kbds!=NULL) + { + if (CFArrayGetCount(kbds)!=0) + { + TISInputSourceRef klRef = (TISInputSourceRef)CFArrayGetValueAtIndex(kbds, 0); + if (klRef!=NULL) + TISSelectInputSource(klRef); + } + } + [pool drain]; +} diff --git a/src/gui/UBKeyboardPalette_mac.cpp b/src/gui/UBKeyboardPalette_mac.cpp index a8ca7c72..79e48e36 100644 --- a/src/gui/UBKeyboardPalette_mac.cpp +++ b/src/gui/UBKeyboardPalette_mac.cpp @@ -57,23 +57,6 @@ void UBKeyboardPalette::createCtrlButtons() ctrlButtons[8] = new UBLocaleButton(this); } -void SetMacLocaleByIdentifier(const QString& id) -{ - const char * strName = id.toAscii().data(); - - CFStringRef iName = CFStringCreateWithCString(NULL, strName, kCFStringEncodingMacRoman ); - - CFStringRef keys[] = { kTISPropertyInputSourceCategory, kTISPropertyInputSourceID }; - CFStringRef values[] = { kTISCategoryKeyboardInputSource, iName }; - CFDictionaryRef dict = CFDictionaryCreate(NULL, (const void **)keys, (const void **)values, 2, NULL, NULL); - CFArrayRef kbds = TISCreateInputSourceList(dict, true); - if (CFArrayGetCount(kbds)!=0) - { - TISInputSourceRef klRef = (TISInputSourceRef)CFArrayGetValueAtIndex(kbds, 0); - if (klRef!=NULL) - TISSelectInputSource(klRef); - } -} void UBKeyboardPalette::checkLayout() @@ -108,6 +91,6 @@ void UBKeyboardPalette::onActivated(bool) void UBKeyboardPalette::onLocaleChanged(UBKeyboardLocale* locale) { - SetMacLocaleByIdentifier(locale->id); + UBPlatformUtils::SetMacLocaleByIdentifier(locale->id); } From 931e099e5d4afedfaeb128a6d7d05e596e17f302 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Wed, 5 Sep 2012 11:13:54 +0200 Subject: [PATCH 13/29] added toque on page thumbnail depending if the teacherguide is filled out or not --- resources/images/toque.png | Bin 0 -> 3423 bytes resources/sankore.qrc | 1 + src/document/UBDocumentController.cpp | 23 ++++++----------- src/gui/UBDocumentNavigator.cpp | 34 +++++++++++++++++++++----- src/gui/UBTeacherGuideWidget.cpp | 4 +-- 5 files changed, 38 insertions(+), 24 deletions(-) create mode 100644 resources/images/toque.png diff --git a/resources/images/toque.png b/resources/images/toque.png new file mode 100644 index 0000000000000000000000000000000000000000..a976e147507342f478265ea2db06db82baec4d84 GIT binary patch literal 3423 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 zimages/teacherGuide/pencil.svg images/duplicateDisabled.svg images/teacherGuide/flash_24x24.svg + images/toque.png diff --git a/src/document/UBDocumentController.cpp b/src/document/UBDocumentController.cpp index 4be9ee0f..24d76fd6 100755 --- a/src/document/UBDocumentController.cpp +++ b/src/document/UBDocumentController.cpp @@ -363,25 +363,18 @@ void UBDocumentController::setupViews() connect(mDocumentUI->thumbnailWidget, SIGNAL(sceneDropped(UBDocumentProxy*, int, int)), this, SLOT(moveSceneToIndex ( UBDocumentProxy*, int, int))); connect(mDocumentUI->thumbnailWidget, SIGNAL(resized()), this, SLOT(thumbnailViewResized())); - connect(mDocumentUI->thumbnailWidget, SIGNAL(mouseDoubleClick(QGraphicsItem*, int)), - this, SLOT(pageDoubleClicked(QGraphicsItem*, int))); - connect(mDocumentUI->thumbnailWidget, SIGNAL(mouseClick(QGraphicsItem*, int)), - this, SLOT(pageClicked(QGraphicsItem*, int))); + connect(mDocumentUI->thumbnailWidget, SIGNAL(mouseDoubleClick(QGraphicsItem*, int)), this, SLOT(pageDoubleClicked(QGraphicsItem*, int))); + connect(mDocumentUI->thumbnailWidget, SIGNAL(mouseClick(QGraphicsItem*, int)), this, SLOT(pageClicked(QGraphicsItem*, int))); - connect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), - this, SLOT(pageSelectionChanged())); + connect(mDocumentUI->thumbnailWidget->scene(), SIGNAL(selectionChanged()), this, SLOT(pageSelectionChanged())); - connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentCreated(UBDocumentProxy*)), - this, SLOT(addDocumentInTree(UBDocumentProxy*))); + connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentCreated(UBDocumentProxy*)), this, SLOT(addDocumentInTree(UBDocumentProxy*))); - connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*)), - this, SLOT(updateDocumentInTree(UBDocumentProxy*))); + connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentMetadataChanged(UBDocumentProxy*)), this, SLOT(updateDocumentInTree(UBDocumentProxy*))); - connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneCreated(UBDocumentProxy*, int)), - this, SLOT(documentSceneChanged(UBDocumentProxy*, int))); + connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneCreated(UBDocumentProxy*, int)), this, SLOT(documentSceneChanged(UBDocumentProxy*, int))); - connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneWillBeDeleted(UBDocumentProxy*, int)), - this, SLOT(documentSceneChanged(UBDocumentProxy*, int))); + connect(UBPersistenceManager::persistenceManager(), SIGNAL(documentSceneWillBeDeleted(UBDocumentProxy*, int)), this, SLOT(documentSceneChanged(UBDocumentProxy*, int))); mDocumentUI->thumbnailWidget->setBackgroundBrush(UBSettings::documentViewLightColor); @@ -996,7 +989,7 @@ void UBDocumentController::addFolderOfImages() if (importedImageNumber == 0) { - showMessage(tr("Folder does not contain any image files!")); + showMessage(tr("Folder does not contain any image files")); UBApplication::applicationController->showDocument(); } else diff --git a/src/gui/UBDocumentNavigator.cpp b/src/gui/UBDocumentNavigator.cpp index e2de9970..90b45615 100644 --- a/src/gui/UBDocumentNavigator.cpp +++ b/src/gui/UBDocumentNavigator.cpp @@ -69,6 +69,9 @@ UBDocumentNavigator::~UBDocumentNavigator() } } +#include "gui/UBDockTeacherGuideWidget.h" +#include "gui/UBTeacherGuideWidget.h" + /** * \brief Generate the thumbnails */ @@ -84,10 +87,31 @@ void UBDocumentNavigator::generateThumbnails(UBDocumentContainer* source) for(int i = 0; i < source->selectedDocument()->pageCount(); i++) { + const QPixmap* pix = source->pageAt(i); - UBSceneThumbnailNavigPixmap* pixmapItem = new UBSceneThumbnailNavigPixmap(*pix, source->selectedDocument(), i); + QPixmap result(pix->width(),pix->height()); int pageIndex = UBDocumentContainer::pageFromSceneIndex(i); - QString label = pageIndex == 0 ? tr("Title page") : tr("Page %0").arg(pageIndex); + + QPainter composePainter; + composePainter.begin(&result); + composePainter.drawPixmap(QPoint(0,0),*pix); + + if(pageIndex == UBApplication::boardController->currentPage() && + ((pageIndex == 0 && UBSettings::settings()->teacherGuidePageZeroActivated->get().toBool()) || + (pageIndex && UBSettings::settings()->teacherGuideLessonPagesActivated->get().toBool())) + ) { + if(UBApplication::boardController->paletteManager()->teacherGuideDockWidget()->teacherGuideWidget()->isModified()){ + QPixmap toque(":images/toque.png"); + composePainter.setOpacity(0.6); + composePainter.drawPixmap(QPoint(pix->width() - toque.width(),0),toque); + } + } + + composePainter.end(); + + UBSceneThumbnailNavigPixmap* pixmapItem = new UBSceneThumbnailNavigPixmap(result, source->selectedDocument(), i); + + QString label = pageIndex == 0 ? tr("Title page") : tr("Page %0").arg(pageIndex); UBThumbnailTextItem *labelItem = new UBThumbnailTextItem(label); UBImgTextThumbnailElement thumbWithText(pixmapItem, labelItem); @@ -104,7 +128,7 @@ void UBDocumentNavigator::generateThumbnails(UBDocumentContainer* source) void UBDocumentNavigator::onScrollToSelectedPage(int index) { - qDebug() << "Selection in widet: " << index; + qDebug() << "Selection in widget: " << index; int c = 0; foreach(UBImgTextThumbnailElement el, mThumbsWithLabels) { @@ -118,7 +142,6 @@ void UBDocumentNavigator::onScrollToSelectedPage(int index) } c++; } -// centerOn(mThumbsWithLabels[index].getThumbnail()); } /** @@ -131,8 +154,7 @@ void UBDocumentNavigator::updateSpecificThumbnail(int iPage) //UBGraphicsScene* pScene = UBApplication::boardController->activeScene(); const QPixmap* pix = UBApplication::boardController->pageAt(iPage); - UBSceneThumbnailNavigPixmap* newItem = new UBSceneThumbnailNavigPixmap(*pix, - UBApplication::boardController->selectedDocument(), iPage); + UBSceneThumbnailNavigPixmap* newItem = new UBSceneThumbnailNavigPixmap(*pix, UBApplication::boardController->selectedDocument(), iPage); // Get the old thumbnail UBSceneThumbnailNavigPixmap* oldItem = mThumbsWithLabels.at(iPage).getThumbnail(); diff --git a/src/gui/UBTeacherGuideWidget.cpp b/src/gui/UBTeacherGuideWidget.cpp index 77c692a5..ffe11cbd 100644 --- a/src/gui/UBTeacherGuideWidget.cpp +++ b/src/gui/UBTeacherGuideWidget.cpp @@ -1152,9 +1152,7 @@ bool UBTeacherGuidePageZeroWidget::isModified() void UBTeacherGuidePageZeroWidget::resizeEvent(QResizeEvent* ev) { emit resized(); -/* mpScrollArea->resize(width(), height()); - mpContainerWidget->resize(width(), height()); -*/ QWidget::resizeEvent(ev); + QWidget::resizeEvent(ev); } /*************************************************************************** From 938fb11ec8048086550d401cf62b5a30febbfb00 Mon Sep 17 00:00:00 2001 From: bmagnin Date: Wed, 5 Sep 2012 14:52:50 +0200 Subject: [PATCH 14/29] Wording in french for inter activities --- .../interactivities/Calcul.wgt/i18n/Messages_fr.properties | 6 +++--- .../interactivities/Des.wgt/i18n/Messages_fr.properties | 6 +++--- .../Enveloppe.wgt/i18n/Messages_fr.properties | 6 +++--- .../interactivities/Memory.wgt/i18n/Messages_fr.properties | 6 +++--- .../Selectionner.wgt/locales/fr/js/script.js | 2 +- .../interactivities/Tables.wgt/i18n/Messages_fr.properties | 6 +++--- .../interactivities/Train.wgt/i18n/Messages_fr.properties | 6 +++--- .../Transformation.wgt/i18n/Messages_fr.properties | 6 +++--- 8 files changed, 22 insertions(+), 22 deletions(-) diff --git a/resources/library/interactivities/Calcul.wgt/i18n/Messages_fr.properties b/resources/library/interactivities/Calcul.wgt/i18n/Messages_fr.properties index 42cae735..f89c9066 100644 --- a/resources/library/interactivities/Calcul.wgt/i18n/Messages_fr.properties +++ b/resources/library/interactivities/Calcul.wgt/i18n/Messages_fr.properties @@ -1,11 +1,11 @@ fr.njin.i18n.document.title = Calcul rapide -fr.njin.i18n.toolbar.edit = Editer -fr.njin.i18n.toolbar.view = Fermer +fr.njin.i18n.toolbar.edit = Modifier +fr.njin.i18n.toolbar.view = Editer fr.njin.i18n.toolbar.reload = Recharger fr.njin.i18n.toolbar.help = Aide -fr.njin.i18n.parameters.label.themes = Thème +fr.njin.i18n.parameters.label.themes = Thèmes fr.njin.i18n.parameters.label.slate.themes = ardoise fr.njin.i18n.parameters.label.pad.themes = tablette fr.njin.i18n.parameters.label.none.themes = aucun diff --git a/resources/library/interactivities/Des.wgt/i18n/Messages_fr.properties b/resources/library/interactivities/Des.wgt/i18n/Messages_fr.properties index 02bef45e..cdc4fe70 100644 --- a/resources/library/interactivities/Des.wgt/i18n/Messages_fr.properties +++ b/resources/library/interactivities/Des.wgt/i18n/Messages_fr.properties @@ -1,11 +1,11 @@ fr.njin.i18n.document.title = Dés -fr.njin.i18n.toolbar.edit = Editer -fr.njin.i18n.toolbar.view = Fermer +fr.njin.i18n.toolbar.edit = Modifier +fr.njin.i18n.toolbar.view = Afficher fr.njin.i18n.toolbar.reload = Recharger fr.njin.i18n.toolbar.help = Aide -fr.njin.i18n.parameters.label.themes = Thème +fr.njin.i18n.parameters.label.themes = Thèmes fr.njin.i18n.parameters.label.slate.themes = ardoise fr.njin.i18n.parameters.label.pad.themes = tablette fr.njin.i18n.parameters.label.none.themes = aucun diff --git a/resources/library/interactivities/Enveloppe.wgt/i18n/Messages_fr.properties b/resources/library/interactivities/Enveloppe.wgt/i18n/Messages_fr.properties index 085ce522..131cc892 100644 --- a/resources/library/interactivities/Enveloppe.wgt/i18n/Messages_fr.properties +++ b/resources/library/interactivities/Enveloppe.wgt/i18n/Messages_fr.properties @@ -1,11 +1,11 @@ fr.njin.i18n.document.title = Enveloppe -fr.njin.i18n.toolbar.edit = Editer -fr.njin.i18n.toolbar.view = Fermer +fr.njin.i18n.toolbar.edit = Modifier +fr.njin.i18n.toolbar.view = Afficher fr.njin.i18n.toolbar.reload = Recharger fr.njin.i18n.toolbar.help = Aide -fr.njin.i18n.parameters.label.themes = Thème +fr.njin.i18n.parameters.label.themes = Thèmes fr.njin.i18n.parameters.label.slate.themes = ardoise fr.njin.i18n.parameters.label.pad.themes = tablette fr.njin.i18n.parameters.label.none.themes = aucun diff --git a/resources/library/interactivities/Memory.wgt/i18n/Messages_fr.properties b/resources/library/interactivities/Memory.wgt/i18n/Messages_fr.properties index 8054dd1c..3b35c9c6 100644 --- a/resources/library/interactivities/Memory.wgt/i18n/Messages_fr.properties +++ b/resources/library/interactivities/Memory.wgt/i18n/Messages_fr.properties @@ -1,11 +1,11 @@ fr.njin.i18n.document.title = Memory -fr.njin.i18n.toolbar.edit = Editer -fr.njin.i18n.toolbar.view = Fermer +fr.njin.i18n.toolbar.edit = Modifier +fr.njin.i18n.toolbar.view = Afficher fr.njin.i18n.toolbar.reload = Recharger fr.njin.i18n.toolbar.help = Aide -fr.njin.i18n.parameters.label.themes = Thème +fr.njin.i18n.parameters.label.themes = Thèmes fr.njin.i18n.parameters.label.slate.themes = ardoise fr.njin.i18n.parameters.label.pad.themes = tablette fr.njin.i18n.parameters.label.none.themes = aucun diff --git a/resources/library/interactivities/Selectionner.wgt/locales/fr/js/script.js b/resources/library/interactivities/Selectionner.wgt/locales/fr/js/script.js index 465f601e..b37fdee6 100644 --- a/resources/library/interactivities/Selectionner.wgt/locales/fr/js/script.js +++ b/resources/library/interactivities/Selectionner.wgt/locales/fr/js/script.js @@ -3,7 +3,7 @@ var sankoreLang = { edit: "Modifier", short_desc: "Sélectionner les animaux dans la liste suivante :", add: "Nouveau bloc", - enter: "Saisir votre consigne ici ...", + enter: "Texte", cat: "chat", ball: "balle", shovel: "pelle", diff --git a/resources/library/interactivities/Tables.wgt/i18n/Messages_fr.properties b/resources/library/interactivities/Tables.wgt/i18n/Messages_fr.properties index 27f9bd5d..9019424a 100644 --- a/resources/library/interactivities/Tables.wgt/i18n/Messages_fr.properties +++ b/resources/library/interactivities/Tables.wgt/i18n/Messages_fr.properties @@ -1,11 +1,11 @@ fr.njin.i18n.document.title = Tables -fr.njin.i18n.toolbar.edit = Editer -fr.njin.i18n.toolbar.view = Fermer +fr.njin.i18n.toolbar.edit = Modifier +fr.njin.i18n.toolbar.view = Afficher fr.njin.i18n.toolbar.reload = Recharger fr.njin.i18n.toolbar.help = Aide -fr.njin.i18n.parameters.label.themes = Thème +fr.njin.i18n.parameters.label.themes = Thèmes fr.njin.i18n.parameters.label.slate.themes = ardoise fr.njin.i18n.parameters.label.pad.themes = tablette fr.njin.i18n.parameters.label.none.themes = aucun diff --git a/resources/library/interactivities/Train.wgt/i18n/Messages_fr.properties b/resources/library/interactivities/Train.wgt/i18n/Messages_fr.properties index 4f34d08f..f9046ee8 100644 --- a/resources/library/interactivities/Train.wgt/i18n/Messages_fr.properties +++ b/resources/library/interactivities/Train.wgt/i18n/Messages_fr.properties @@ -1,11 +1,11 @@ fr.njin.i18n.document.title = Le train -fr.njin.i18n.toolbar.edit = Editer -fr.njin.i18n.toolbar.view = Fermer +fr.njin.i18n.toolbar.edit = Modifier +fr.njin.i18n.toolbar.view = Afficher fr.njin.i18n.toolbar.reload = Recharger fr.njin.i18n.toolbar.help = Aide -fr.njin.i18n.parameters.label.themes = Thème +fr.njin.i18n.parameters.label.themes = Thèmes fr.njin.i18n.parameters.label.slate.themes = ardoise fr.njin.i18n.parameters.label.pad.themes = tablette fr.njin.i18n.parameters.label.none.themes = aucun diff --git a/resources/library/interactivities/Transformation.wgt/i18n/Messages_fr.properties b/resources/library/interactivities/Transformation.wgt/i18n/Messages_fr.properties index a1de3815..19e73785 100644 --- a/resources/library/interactivities/Transformation.wgt/i18n/Messages_fr.properties +++ b/resources/library/interactivities/Transformation.wgt/i18n/Messages_fr.properties @@ -1,11 +1,11 @@ fr.njin.i18n.document.title = Boîte à transformation -fr.njin.i18n.toolbar.edit = Editer -fr.njin.i18n.toolbar.view = Fermer +fr.njin.i18n.toolbar.edit = Modifier +fr.njin.i18n.toolbar.view = Afficher fr.njin.i18n.toolbar.reload = Recharger fr.njin.i18n.toolbar.help = Aide -fr.njin.i18n.parameters.label.themes = Thème +fr.njin.i18n.parameters.label.themes = Thèmes fr.njin.i18n.parameters.label.slate.themes = ardoise fr.njin.i18n.parameters.label.pad.themes = tablette fr.njin.i18n.parameters.label.none.themes = aucun From 203614ae4759063877f3e7f25f4c090b7aad9f57 Mon Sep 17 00:00:00 2001 From: bmagnin Date: Thu, 6 Sep 2012 08:42:31 +0200 Subject: [PATCH 15/29] French wording new inter activities --- .../Balance.wgt/i18n/Messages_fr.properties | 6 +++--- .../Cadran.wgt/i18n/Messages_fr.properties | 6 +++--- .../Morpion.wgt/i18n/Messages_fr.properties | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/resources/inDevelopmentWidgets/Balance.wgt/i18n/Messages_fr.properties b/resources/inDevelopmentWidgets/Balance.wgt/i18n/Messages_fr.properties index ee6b23ad..c4ee9e73 100644 --- a/resources/inDevelopmentWidgets/Balance.wgt/i18n/Messages_fr.properties +++ b/resources/inDevelopmentWidgets/Balance.wgt/i18n/Messages_fr.properties @@ -1,11 +1,11 @@ fr.njin.i18n.document.title = La Balance -fr.njin.i18n.toolbar.edit = Editer -fr.njin.i18n.toolbar.view = Fermer +fr.njin.i18n.toolbar.edit = Modifier +fr.njin.i18n.toolbar.view = Afficher fr.njin.i18n.toolbar.reload = Recharger fr.njin.i18n.toolbar.help = Aide -fr.njin.i18n.parameters.label.themes = Thème +fr.njin.i18n.parameters.label.themes = Thèmes fr.njin.i18n.parameters.label.slate.themes = ardoise fr.njin.i18n.parameters.label.pad.themes = tablette fr.njin.i18n.parameters.label.none.themes = aucun diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/i18n/Messages_fr.properties b/resources/inDevelopmentWidgets/Cadran.wgt/i18n/Messages_fr.properties index c2f8a829..939ff3d0 100644 --- a/resources/inDevelopmentWidgets/Cadran.wgt/i18n/Messages_fr.properties +++ b/resources/inDevelopmentWidgets/Cadran.wgt/i18n/Messages_fr.properties @@ -1,11 +1,11 @@ fr.njin.i18n.document.title = Cadran opératoire -fr.njin.i18n.toolbar.edit = Editer -fr.njin.i18n.toolbar.view = Fermer +fr.njin.i18n.toolbar.edit = Modifier +fr.njin.i18n.toolbar.view = Afficher fr.njin.i18n.toolbar.reload = Recharger fr.njin.i18n.toolbar.help = Aide -fr.njin.i18n.parameters.label.themes = Thème +fr.njin.i18n.parameters.label.themes = Thèmes fr.njin.i18n.parameters.label.slate.themes = ardoise fr.njin.i18n.parameters.label.pad.themes = tablette fr.njin.i18n.parameters.label.none.themes = aucun \ No newline at end of file diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/i18n/Messages_fr.properties b/resources/inDevelopmentWidgets/Morpion.wgt/i18n/Messages_fr.properties index a854b849..5790d783 100644 --- a/resources/inDevelopmentWidgets/Morpion.wgt/i18n/Messages_fr.properties +++ b/resources/inDevelopmentWidgets/Morpion.wgt/i18n/Messages_fr.properties @@ -1,11 +1,11 @@ fr.njin.i18n.document.title = Morpion -fr.njin.i18n.toolbar.edit = Editer -fr.njin.i18n.toolbar.view = Fermer +fr.njin.i18n.toolbar.edit = Modifier +fr.njin.i18n.toolbar.view = Afficher fr.njin.i18n.toolbar.reload = Recharger fr.njin.i18n.toolbar.help = Aide -fr.njin.i18n.parameters.label.themes = Thème +fr.njin.i18n.parameters.label.themes = Thèmes fr.njin.i18n.parameters.label.slate.themes = ardoise fr.njin.i18n.parameters.label.pad.themes = tablette fr.njin.i18n.parameters.label.none.themes = aucun From 782036c322750190bd109611efffdf7dd512fce3 Mon Sep 17 00:00:00 2001 From: bmagnin Date: Thu, 6 Sep 2012 08:50:17 +0200 Subject: [PATCH 16/29] Replace inter activities in the right folder and git ignore update to ignore .ds_store --- .gitignore | 2 ++ .../interactivities}/Balance.wgt/config.xml | 0 .../css/fonts/Lobster/Lobster_1.3-webfont.eot | Bin .../css/fonts/Lobster/Lobster_1.3-webfont.svg | 0 .../css/fonts/Lobster/Lobster_1.3-webfont.ttf | Bin .../css/fonts/Lobster/Lobster_1.3-webfont.woff | Bin .../Balance.wgt/css/fonts/Lobster/demo.html | 0 .../Balance.wgt/css/fonts/Lobster/stylesheet.css | 0 .../css/fonts/SF-Toontime/SF_Toontime-webfont.eot | Bin .../css/fonts/SF-Toontime/SF_Toontime-webfont.svg | 0 .../css/fonts/SF-Toontime/SF_Toontime-webfont.ttf | Bin .../css/fonts/SF-Toontime/SF_Toontime-webfont.woff | Bin .../SF-Toontime/SF_Toontime_Blotch-webfont.eot | Bin .../SF-Toontime/SF_Toontime_Blotch-webfont.svg | 0 .../SF-Toontime/SF_Toontime_Blotch-webfont.ttf | Bin .../SF-Toontime/SF_Toontime_Blotch-webfont.woff | Bin .../SF_Toontime_Blotch_Italic-webfont.eot | Bin .../SF_Toontime_Blotch_Italic-webfont.svg | 0 .../SF_Toontime_Blotch_Italic-webfont.ttf | Bin .../SF_Toontime_Blotch_Italic-webfont.woff | Bin .../fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot | Bin .../fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg | 0 .../fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf | Bin .../fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff | Bin .../SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot | Bin .../SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg | 0 .../SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf | Bin .../SF_Toontime_Bold_Italic-webfont.woff | Bin .../SF-Toontime/SF_Toontime_Italic-webfont.eot | Bin .../SF-Toontime/SF_Toontime_Italic-webfont.svg | 0 .../SF-Toontime/SF_Toontime_Italic-webfont.ttf | Bin .../SF-Toontime/SF_Toontime_Italic-webfont.woff | Bin .../Balance.wgt/css/fonts/SF-Toontime/demo.html | 0 .../css/fonts/SF-Toontime/stylesheet.css | 0 .../Balance.wgt/css/images/balance.png | Bin .../interactivities}/Balance.wgt/css/images/bg.png | Bin .../Balance.wgt/css/images/delete.png | Bin .../Balance.wgt/css/images/graduations.png | Bin .../Balance.wgt/css/images/pad-bd.png | Bin .../Balance.wgt/css/images/parameters-bg.png | Bin .../Balance.wgt/css/images/pivot.png | Bin .../Balance.wgt/css/images/scale.png | Bin .../Balance.wgt/css/images/scales.png | Bin .../Balance.wgt/css/images/slate-bd.png | Bin .../Balance.wgt/css/images/slate-toolbar-edit.png | Bin .../Balance.wgt/css/images/slate-toolbar-help.png | Bin .../Balance.wgt/css/images/slate-toolbar-reload.png | Bin .../Balance.wgt/css/images/toolbar-edit.png | Bin .../Balance.wgt/css/images/toolbar-help.png | Bin .../Balance.wgt/css/images/toolbar-reload.png | Bin .../Balance.wgt/css/images/weight-add.png | Bin .../Balance.wgt/css/images/weight.png | Bin .../interactivities}/Balance.wgt/css/main.css | 0 .../interactivities}/Balance.wgt/css/ubw-help.css | 0 .../interactivities}/Balance.wgt/css/ubw-main.css | 0 .../interactivities}/Balance.wgt/help.html | 0 .../Balance.wgt/i18n/Messages.properties | 0 .../Balance.wgt/i18n/Messages_fr.properties | 0 .../interactivities}/Balance.wgt/icon.png | Bin .../interactivities}/Balance.wgt/index.html | 0 .../Balance.wgt/js/help-template.js | 0 .../Balance.wgt/js/help_fr-template.js | 0 .../Balance.wgt/js/lib/jquery-1.7.1.min.js | 0 .../Balance.wgt/js/lib/jquery-css-transform.js | 0 .../js/lib/jquery-ui-1.8.17.custom.min.js | 0 .../js/lib/jquery.i18n.properties-min-1.0.9.js | 0 .../Balance.wgt/js/lib/modernizr.js | 0 .../interactivities}/Balance.wgt/js/lib/mustache.js | 0 .../interactivities}/Balance.wgt/js/lib/ubw-main.js | 0 .../interactivities}/Balance.wgt/js/main.js | 0 .../interactivities}/Balance.wgt/js/templates.js | 0 .../interactivities}/Cadran.wgt/config.xml | 0 .../css/fonts/Lobster/Lobster_1.3-webfont.eot | Bin .../css/fonts/Lobster/Lobster_1.3-webfont.svg | 0 .../css/fonts/Lobster/Lobster_1.3-webfont.ttf | Bin .../css/fonts/Lobster/Lobster_1.3-webfont.woff | Bin .../Cadran.wgt/css/fonts/Lobster/demo.html | 0 .../Cadran.wgt/css/fonts/Lobster/stylesheet.css | 0 .../css/fonts/SF-Toontime/SF_Toontime-webfont.eot | Bin .../css/fonts/SF-Toontime/SF_Toontime-webfont.svg | 0 .../css/fonts/SF-Toontime/SF_Toontime-webfont.ttf | Bin .../css/fonts/SF-Toontime/SF_Toontime-webfont.woff | Bin .../SF-Toontime/SF_Toontime_Blotch-webfont.eot | Bin .../SF-Toontime/SF_Toontime_Blotch-webfont.svg | 0 .../SF-Toontime/SF_Toontime_Blotch-webfont.ttf | Bin .../SF-Toontime/SF_Toontime_Blotch-webfont.woff | Bin .../SF_Toontime_Blotch_Italic-webfont.eot | Bin .../SF_Toontime_Blotch_Italic-webfont.svg | 0 .../SF_Toontime_Blotch_Italic-webfont.ttf | Bin .../SF_Toontime_Blotch_Italic-webfont.woff | Bin .../fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot | Bin .../fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg | 0 .../fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf | Bin .../fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff | Bin .../SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot | Bin .../SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg | 0 .../SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf | Bin .../SF_Toontime_Bold_Italic-webfont.woff | Bin .../SF-Toontime/SF_Toontime_Italic-webfont.eot | Bin .../SF-Toontime/SF_Toontime_Italic-webfont.svg | 0 .../SF-Toontime/SF_Toontime_Italic-webfont.ttf | Bin .../SF-Toontime/SF_Toontime_Italic-webfont.woff | Bin .../Cadran.wgt/css/fonts/SF-Toontime/demo.html | 0 .../Cadran.wgt/css/fonts/SF-Toontime/stylesheet.css | 0 .../interactivities}/Cadran.wgt/css/images/bg.png | Bin .../Cadran.wgt/css/images/pad-bd.png | Bin .../Cadran.wgt/css/images/parameters-bg.png | Bin .../Cadran.wgt/css/images/slate-bd.png | Bin .../Cadran.wgt/css/images/slate-toolbar-edit.png | Bin .../Cadran.wgt/css/images/slate-toolbar-help.png | Bin .../Cadran.wgt/css/images/slate-toolbar-reload.png | Bin .../Cadran.wgt/css/images/toolbar-edit.png | Bin .../Cadran.wgt/css/images/toolbar-help.png | Bin .../Cadran.wgt/css/images/toolbar-reload.png | Bin .../interactivities}/Cadran.wgt/css/main.css | 0 .../interactivities}/Cadran.wgt/css/ubw-help.css | 0 .../interactivities}/Cadran.wgt/css/ubw-main.css | 0 .../interactivities}/Cadran.wgt/help.html | 0 .../Cadran.wgt/i18n/Messages.properties | 0 .../Cadran.wgt/i18n/Messages_fr.properties | 0 .../interactivities}/Cadran.wgt/icon.png | Bin .../interactivities}/Cadran.wgt/index.html | 0 .../interactivities}/Cadran.wgt/js/help-template.js | 0 .../Cadran.wgt/js/help_fr-template.js | 0 .../Cadran.wgt/js/lib/jquery-1.7.1.min.js | 0 .../Cadran.wgt/js/lib/jquery-css-transform.js | 0 .../js/lib/jquery.i18n.properties-min-1.0.9.js | 0 .../interactivities}/Cadran.wgt/js/lib/modernizr.js | 0 .../interactivities}/Cadran.wgt/js/lib/mustache.js | 0 .../interactivities}/Cadran.wgt/js/lib/ubw-main.js | 0 .../interactivities}/Cadran.wgt/js/main.js | 0 .../interactivities}/Cadran.wgt/js/templates.js | 0 .../interactivities}/Morpion.wgt/config.xml | 0 .../css/fonts/Lobster/Lobster_1.3-webfont.eot | Bin .../css/fonts/Lobster/Lobster_1.3-webfont.svg | 0 .../css/fonts/Lobster/Lobster_1.3-webfont.ttf | Bin .../css/fonts/Lobster/Lobster_1.3-webfont.woff | Bin .../css/fonts/Lobster/SIL Open Font License 1.1.txt | 0 .../Morpion.wgt/css/fonts/Lobster/demo.html | 0 .../Morpion.wgt/css/fonts/Lobster/stylesheet.css | 0 .../css/fonts/SF-Toontime/SF_Toontime-webfont.eot | Bin .../css/fonts/SF-Toontime/SF_Toontime-webfont.svg | 0 .../css/fonts/SF-Toontime/SF_Toontime-webfont.ttf | Bin .../css/fonts/SF-Toontime/SF_Toontime-webfont.woff | Bin .../SF-Toontime/SF_Toontime_Blotch-webfont.eot | Bin .../SF-Toontime/SF_Toontime_Blotch-webfont.svg | 0 .../SF-Toontime/SF_Toontime_Blotch-webfont.ttf | Bin .../SF-Toontime/SF_Toontime_Blotch-webfont.woff | Bin .../SF_Toontime_Blotch_Italic-webfont.eot | Bin .../SF_Toontime_Blotch_Italic-webfont.svg | 0 .../SF_Toontime_Blotch_Italic-webfont.ttf | Bin .../SF_Toontime_Blotch_Italic-webfont.woff | Bin .../fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot | Bin .../fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg | 0 .../fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf | Bin .../fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff | Bin .../SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot | Bin .../SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg | 0 .../SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf | Bin .../SF_Toontime_Bold_Italic-webfont.woff | Bin .../SF-Toontime/SF_Toontime_Italic-webfont.eot | Bin .../SF-Toontime/SF_Toontime_Italic-webfont.svg | 0 .../SF-Toontime/SF_Toontime_Italic-webfont.ttf | Bin .../SF-Toontime/SF_Toontime_Italic-webfont.woff | Bin .../css/fonts/SF-Toontime/ShyFonts Font License.txt | 0 .../Morpion.wgt/css/fonts/SF-Toontime/demo.html | 0 .../css/fonts/SF-Toontime/stylesheet.css | 0 .../interactivities}/Morpion.wgt/css/images/bg.png | Bin .../Morpion.wgt/css/images/pad-bd.png | Bin .../Morpion.wgt/css/images/parameters-bg.png | Bin .../Morpion.wgt/css/images/player1.png | Bin .../Morpion.wgt/css/images/player2.png | Bin .../Morpion.wgt/css/images/result-bg.png | Bin .../Morpion.wgt/css/images/slate-bd.png | Bin .../Morpion.wgt/css/images/slate-toolbar-edit.png | Bin .../Morpion.wgt/css/images/slate-toolbar-help.png | Bin .../Morpion.wgt/css/images/slate-toolbar-reload.png | Bin .../Morpion.wgt/css/images/submit.png | Bin .../Morpion.wgt/css/images/toolbar-edit.png | Bin .../Morpion.wgt/css/images/toolbar-help.png | Bin .../Morpion.wgt/css/images/toolbar-reload.png | Bin .../interactivities}/Morpion.wgt/css/main.css | 0 .../interactivities}/Morpion.wgt/css/ubw-help.css | 0 .../interactivities}/Morpion.wgt/css/ubw-main.css | 0 .../interactivities}/Morpion.wgt/help.html | 0 .../Morpion.wgt/i18n/Messages.properties | 0 .../Morpion.wgt/i18n/Messages_fr.properties | 0 .../interactivities}/Morpion.wgt/icon.png | Bin .../interactivities}/Morpion.wgt/images/failed.png | Bin .../interactivities}/Morpion.wgt/images/succeed.png | Bin .../interactivities}/Morpion.wgt/index.html | 0 .../Morpion.wgt/js/help-template.js | 0 .../Morpion.wgt/js/help_fr-template.js | 0 .../Morpion.wgt/js/lib/jquery-1.7.1.min.js | 0 .../js/lib/jquery.i18n.properties-min-1.0.9.js | 0 .../Morpion.wgt/js/lib/modernizr.js | 0 .../interactivities}/Morpion.wgt/js/lib/mustache.js | 0 .../interactivities}/Morpion.wgt/js/lib/ubw-main.js | 0 .../interactivities}/Morpion.wgt/js/main.js | 0 .../interactivities}/Morpion.wgt/js/templates.js | 0 200 files changed, 2 insertions(+) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/config.xml (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/Lobster/demo.html (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/Lobster/stylesheet.css (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/demo.html (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/fonts/SF-Toontime/stylesheet.css (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/balance.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/bg.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/delete.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/graduations.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/pad-bd.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/parameters-bg.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/pivot.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/scale.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/scales.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/slate-bd.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/slate-toolbar-edit.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/slate-toolbar-help.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/slate-toolbar-reload.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/toolbar-edit.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/toolbar-help.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/toolbar-reload.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/weight-add.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/images/weight.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/main.css (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/ubw-help.css (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/css/ubw-main.css (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/help.html (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/i18n/Messages.properties (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/i18n/Messages_fr.properties (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/icon.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/index.html (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/js/help-template.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/js/help_fr-template.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/js/lib/jquery-1.7.1.min.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/js/lib/jquery-css-transform.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/js/lib/jquery-ui-1.8.17.custom.min.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/js/lib/modernizr.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/js/lib/mustache.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/js/lib/ubw-main.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/js/main.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Balance.wgt/js/templates.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/config.xml (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/Lobster/demo.html (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/Lobster/stylesheet.css (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/demo.html (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/fonts/SF-Toontime/stylesheet.css (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/images/bg.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/images/pad-bd.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/images/parameters-bg.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/images/slate-bd.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/images/slate-toolbar-edit.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/images/slate-toolbar-help.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/images/slate-toolbar-reload.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/images/toolbar-edit.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/images/toolbar-help.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/images/toolbar-reload.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/main.css (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/ubw-help.css (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/css/ubw-main.css (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/help.html (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/i18n/Messages.properties (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/i18n/Messages_fr.properties (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/icon.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/index.html (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/js/help-template.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/js/help_fr-template.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/js/lib/jquery-1.7.1.min.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/js/lib/jquery-css-transform.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/js/lib/modernizr.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/js/lib/mustache.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/js/lib/ubw-main.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/js/main.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Cadran.wgt/js/templates.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/config.xml (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/Lobster/SIL Open Font License 1.1.txt (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/Lobster/demo.html (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/Lobster/stylesheet.css (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.eot (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.svg (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.ttf (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.woff (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/ShyFonts Font License.txt (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/demo.html (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/fonts/SF-Toontime/stylesheet.css (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/images/bg.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/images/pad-bd.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/images/parameters-bg.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/images/player1.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/images/player2.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/images/result-bg.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/images/slate-bd.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/images/slate-toolbar-edit.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/images/slate-toolbar-help.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/images/slate-toolbar-reload.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/images/submit.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/images/toolbar-edit.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/images/toolbar-help.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/images/toolbar-reload.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/main.css (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/ubw-help.css (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/css/ubw-main.css (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/help.html (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/i18n/Messages.properties (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/i18n/Messages_fr.properties (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/icon.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/images/failed.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/images/succeed.png (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/index.html (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/js/help-template.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/js/help_fr-template.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/js/lib/jquery-1.7.1.min.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/js/lib/modernizr.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/js/lib/mustache.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/js/lib/ubw-main.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/js/main.js (100%) rename resources/{inDevelopmentWidgets => library/interactivities}/Morpion.wgt/js/templates.js (100%) diff --git a/.gitignore b/.gitignore index 5a290506..8312a361 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,5 @@ plugins/cffadaptor/objects ##################### *.qm + +.DS_Store \ No newline at end of file diff --git a/resources/inDevelopmentWidgets/Balance.wgt/config.xml b/resources/library/interactivities/Balance.wgt/config.xml similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/config.xml rename to resources/library/interactivities/Balance.wgt/config.xml diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.eot b/resources/library/interactivities/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.eot rename to resources/library/interactivities/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.eot diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.svg b/resources/library/interactivities/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.svg rename to resources/library/interactivities/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.svg diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.ttf b/resources/library/interactivities/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.ttf rename to resources/library/interactivities/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.woff b/resources/library/interactivities/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.woff rename to resources/library/interactivities/Balance.wgt/css/fonts/Lobster/Lobster_1.3-webfont.woff diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/Lobster/demo.html b/resources/library/interactivities/Balance.wgt/css/fonts/Lobster/demo.html similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/Lobster/demo.html rename to resources/library/interactivities/Balance.wgt/css/fonts/Lobster/demo.html diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/Lobster/stylesheet.css b/resources/library/interactivities/Balance.wgt/css/fonts/Lobster/stylesheet.css similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/Lobster/stylesheet.css rename to resources/library/interactivities/Balance.wgt/css/fonts/Lobster/stylesheet.css diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.eot b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.eot rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.eot diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.svg b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.svg rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.svg diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.ttf b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.ttf rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.woff b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.woff rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.woff diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.eot b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.eot rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.eot diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.svg b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.svg rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.svg diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.ttf b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.ttf rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.woff b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.woff rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.woff diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.eot b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.eot rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.eot diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.svg b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.svg rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.svg diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.ttf b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.ttf rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.woff b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.woff rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.woff diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.woff b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.woff rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.woff diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.eot b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.eot rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.eot diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.svg b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.svg rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.svg diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.ttf b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.ttf rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.woff b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.woff rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.woff diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/demo.html b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/demo.html similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/demo.html rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/demo.html diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/stylesheet.css b/resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/stylesheet.css similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/fonts/SF-Toontime/stylesheet.css rename to resources/library/interactivities/Balance.wgt/css/fonts/SF-Toontime/stylesheet.css diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/balance.png b/resources/library/interactivities/Balance.wgt/css/images/balance.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/balance.png rename to resources/library/interactivities/Balance.wgt/css/images/balance.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/bg.png b/resources/library/interactivities/Balance.wgt/css/images/bg.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/bg.png rename to resources/library/interactivities/Balance.wgt/css/images/bg.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/delete.png b/resources/library/interactivities/Balance.wgt/css/images/delete.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/delete.png rename to resources/library/interactivities/Balance.wgt/css/images/delete.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/graduations.png b/resources/library/interactivities/Balance.wgt/css/images/graduations.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/graduations.png rename to resources/library/interactivities/Balance.wgt/css/images/graduations.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/pad-bd.png b/resources/library/interactivities/Balance.wgt/css/images/pad-bd.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/pad-bd.png rename to resources/library/interactivities/Balance.wgt/css/images/pad-bd.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/parameters-bg.png b/resources/library/interactivities/Balance.wgt/css/images/parameters-bg.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/parameters-bg.png rename to resources/library/interactivities/Balance.wgt/css/images/parameters-bg.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/pivot.png b/resources/library/interactivities/Balance.wgt/css/images/pivot.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/pivot.png rename to resources/library/interactivities/Balance.wgt/css/images/pivot.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/scale.png b/resources/library/interactivities/Balance.wgt/css/images/scale.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/scale.png rename to resources/library/interactivities/Balance.wgt/css/images/scale.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/scales.png b/resources/library/interactivities/Balance.wgt/css/images/scales.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/scales.png rename to resources/library/interactivities/Balance.wgt/css/images/scales.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/slate-bd.png b/resources/library/interactivities/Balance.wgt/css/images/slate-bd.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/slate-bd.png rename to resources/library/interactivities/Balance.wgt/css/images/slate-bd.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/slate-toolbar-edit.png b/resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-edit.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/slate-toolbar-edit.png rename to resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-edit.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/slate-toolbar-help.png b/resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-help.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/slate-toolbar-help.png rename to resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-help.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/slate-toolbar-reload.png b/resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-reload.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/slate-toolbar-reload.png rename to resources/library/interactivities/Balance.wgt/css/images/slate-toolbar-reload.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/toolbar-edit.png b/resources/library/interactivities/Balance.wgt/css/images/toolbar-edit.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/toolbar-edit.png rename to resources/library/interactivities/Balance.wgt/css/images/toolbar-edit.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/toolbar-help.png b/resources/library/interactivities/Balance.wgt/css/images/toolbar-help.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/toolbar-help.png rename to resources/library/interactivities/Balance.wgt/css/images/toolbar-help.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/toolbar-reload.png b/resources/library/interactivities/Balance.wgt/css/images/toolbar-reload.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/toolbar-reload.png rename to resources/library/interactivities/Balance.wgt/css/images/toolbar-reload.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/weight-add.png b/resources/library/interactivities/Balance.wgt/css/images/weight-add.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/weight-add.png rename to resources/library/interactivities/Balance.wgt/css/images/weight-add.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/images/weight.png b/resources/library/interactivities/Balance.wgt/css/images/weight.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/images/weight.png rename to resources/library/interactivities/Balance.wgt/css/images/weight.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/main.css b/resources/library/interactivities/Balance.wgt/css/main.css similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/main.css rename to resources/library/interactivities/Balance.wgt/css/main.css diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/ubw-help.css b/resources/library/interactivities/Balance.wgt/css/ubw-help.css similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/ubw-help.css rename to resources/library/interactivities/Balance.wgt/css/ubw-help.css diff --git a/resources/inDevelopmentWidgets/Balance.wgt/css/ubw-main.css b/resources/library/interactivities/Balance.wgt/css/ubw-main.css similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/css/ubw-main.css rename to resources/library/interactivities/Balance.wgt/css/ubw-main.css diff --git a/resources/inDevelopmentWidgets/Balance.wgt/help.html b/resources/library/interactivities/Balance.wgt/help.html similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/help.html rename to resources/library/interactivities/Balance.wgt/help.html diff --git a/resources/inDevelopmentWidgets/Balance.wgt/i18n/Messages.properties b/resources/library/interactivities/Balance.wgt/i18n/Messages.properties similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/i18n/Messages.properties rename to resources/library/interactivities/Balance.wgt/i18n/Messages.properties diff --git a/resources/inDevelopmentWidgets/Balance.wgt/i18n/Messages_fr.properties b/resources/library/interactivities/Balance.wgt/i18n/Messages_fr.properties similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/i18n/Messages_fr.properties rename to resources/library/interactivities/Balance.wgt/i18n/Messages_fr.properties diff --git a/resources/inDevelopmentWidgets/Balance.wgt/icon.png b/resources/library/interactivities/Balance.wgt/icon.png similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/icon.png rename to resources/library/interactivities/Balance.wgt/icon.png diff --git a/resources/inDevelopmentWidgets/Balance.wgt/index.html b/resources/library/interactivities/Balance.wgt/index.html similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/index.html rename to resources/library/interactivities/Balance.wgt/index.html diff --git a/resources/inDevelopmentWidgets/Balance.wgt/js/help-template.js b/resources/library/interactivities/Balance.wgt/js/help-template.js similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/js/help-template.js rename to resources/library/interactivities/Balance.wgt/js/help-template.js diff --git a/resources/inDevelopmentWidgets/Balance.wgt/js/help_fr-template.js b/resources/library/interactivities/Balance.wgt/js/help_fr-template.js similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/js/help_fr-template.js rename to resources/library/interactivities/Balance.wgt/js/help_fr-template.js diff --git a/resources/inDevelopmentWidgets/Balance.wgt/js/lib/jquery-1.7.1.min.js b/resources/library/interactivities/Balance.wgt/js/lib/jquery-1.7.1.min.js similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/js/lib/jquery-1.7.1.min.js rename to resources/library/interactivities/Balance.wgt/js/lib/jquery-1.7.1.min.js diff --git a/resources/inDevelopmentWidgets/Balance.wgt/js/lib/jquery-css-transform.js b/resources/library/interactivities/Balance.wgt/js/lib/jquery-css-transform.js similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/js/lib/jquery-css-transform.js rename to resources/library/interactivities/Balance.wgt/js/lib/jquery-css-transform.js diff --git a/resources/inDevelopmentWidgets/Balance.wgt/js/lib/jquery-ui-1.8.17.custom.min.js b/resources/library/interactivities/Balance.wgt/js/lib/jquery-ui-1.8.17.custom.min.js similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/js/lib/jquery-ui-1.8.17.custom.min.js rename to resources/library/interactivities/Balance.wgt/js/lib/jquery-ui-1.8.17.custom.min.js diff --git a/resources/inDevelopmentWidgets/Balance.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js b/resources/library/interactivities/Balance.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js rename to resources/library/interactivities/Balance.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js diff --git a/resources/inDevelopmentWidgets/Balance.wgt/js/lib/modernizr.js b/resources/library/interactivities/Balance.wgt/js/lib/modernizr.js similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/js/lib/modernizr.js rename to resources/library/interactivities/Balance.wgt/js/lib/modernizr.js diff --git a/resources/inDevelopmentWidgets/Balance.wgt/js/lib/mustache.js b/resources/library/interactivities/Balance.wgt/js/lib/mustache.js similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/js/lib/mustache.js rename to resources/library/interactivities/Balance.wgt/js/lib/mustache.js diff --git a/resources/inDevelopmentWidgets/Balance.wgt/js/lib/ubw-main.js b/resources/library/interactivities/Balance.wgt/js/lib/ubw-main.js similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/js/lib/ubw-main.js rename to resources/library/interactivities/Balance.wgt/js/lib/ubw-main.js diff --git a/resources/inDevelopmentWidgets/Balance.wgt/js/main.js b/resources/library/interactivities/Balance.wgt/js/main.js similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/js/main.js rename to resources/library/interactivities/Balance.wgt/js/main.js diff --git a/resources/inDevelopmentWidgets/Balance.wgt/js/templates.js b/resources/library/interactivities/Balance.wgt/js/templates.js similarity index 100% rename from resources/inDevelopmentWidgets/Balance.wgt/js/templates.js rename to resources/library/interactivities/Balance.wgt/js/templates.js diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/config.xml b/resources/library/interactivities/Cadran.wgt/config.xml similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/config.xml rename to resources/library/interactivities/Cadran.wgt/config.xml diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.eot b/resources/library/interactivities/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.eot rename to resources/library/interactivities/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.eot diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.svg b/resources/library/interactivities/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.svg rename to resources/library/interactivities/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.svg diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.ttf b/resources/library/interactivities/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.ttf rename to resources/library/interactivities/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.woff b/resources/library/interactivities/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.woff rename to resources/library/interactivities/Cadran.wgt/css/fonts/Lobster/Lobster_1.3-webfont.woff diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/Lobster/demo.html b/resources/library/interactivities/Cadran.wgt/css/fonts/Lobster/demo.html similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/Lobster/demo.html rename to resources/library/interactivities/Cadran.wgt/css/fonts/Lobster/demo.html diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/Lobster/stylesheet.css b/resources/library/interactivities/Cadran.wgt/css/fonts/Lobster/stylesheet.css similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/Lobster/stylesheet.css rename to resources/library/interactivities/Cadran.wgt/css/fonts/Lobster/stylesheet.css diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.eot b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.eot rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.eot diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.svg b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.svg rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.svg diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.ttf b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.ttf rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.woff b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.woff rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.woff diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.eot b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.eot rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.eot diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.svg b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.svg rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.svg diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.ttf b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.ttf rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.woff b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.woff rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.woff diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.eot b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.eot rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.eot diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.svg b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.svg rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.svg diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.ttf b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.ttf rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.woff b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.woff rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.woff diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.woff b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.woff rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.woff diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.eot b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.eot rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.eot diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.svg b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.svg rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.svg diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.ttf b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.ttf rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.woff b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.woff rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.woff diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/demo.html b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/demo.html similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/demo.html rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/demo.html diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/stylesheet.css b/resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/stylesheet.css similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/fonts/SF-Toontime/stylesheet.css rename to resources/library/interactivities/Cadran.wgt/css/fonts/SF-Toontime/stylesheet.css diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/images/bg.png b/resources/library/interactivities/Cadran.wgt/css/images/bg.png similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/images/bg.png rename to resources/library/interactivities/Cadran.wgt/css/images/bg.png diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/images/pad-bd.png b/resources/library/interactivities/Cadran.wgt/css/images/pad-bd.png similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/images/pad-bd.png rename to resources/library/interactivities/Cadran.wgt/css/images/pad-bd.png diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/images/parameters-bg.png b/resources/library/interactivities/Cadran.wgt/css/images/parameters-bg.png similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/images/parameters-bg.png rename to resources/library/interactivities/Cadran.wgt/css/images/parameters-bg.png diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/images/slate-bd.png b/resources/library/interactivities/Cadran.wgt/css/images/slate-bd.png similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/images/slate-bd.png rename to resources/library/interactivities/Cadran.wgt/css/images/slate-bd.png diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/images/slate-toolbar-edit.png b/resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-edit.png similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/images/slate-toolbar-edit.png rename to resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-edit.png diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/images/slate-toolbar-help.png b/resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-help.png similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/images/slate-toolbar-help.png rename to resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-help.png diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/images/slate-toolbar-reload.png b/resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-reload.png similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/images/slate-toolbar-reload.png rename to resources/library/interactivities/Cadran.wgt/css/images/slate-toolbar-reload.png diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/images/toolbar-edit.png b/resources/library/interactivities/Cadran.wgt/css/images/toolbar-edit.png similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/images/toolbar-edit.png rename to resources/library/interactivities/Cadran.wgt/css/images/toolbar-edit.png diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/images/toolbar-help.png b/resources/library/interactivities/Cadran.wgt/css/images/toolbar-help.png similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/images/toolbar-help.png rename to resources/library/interactivities/Cadran.wgt/css/images/toolbar-help.png diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/images/toolbar-reload.png b/resources/library/interactivities/Cadran.wgt/css/images/toolbar-reload.png similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/images/toolbar-reload.png rename to resources/library/interactivities/Cadran.wgt/css/images/toolbar-reload.png diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/main.css b/resources/library/interactivities/Cadran.wgt/css/main.css similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/main.css rename to resources/library/interactivities/Cadran.wgt/css/main.css diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/ubw-help.css b/resources/library/interactivities/Cadran.wgt/css/ubw-help.css similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/ubw-help.css rename to resources/library/interactivities/Cadran.wgt/css/ubw-help.css diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/css/ubw-main.css b/resources/library/interactivities/Cadran.wgt/css/ubw-main.css similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/css/ubw-main.css rename to resources/library/interactivities/Cadran.wgt/css/ubw-main.css diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/help.html b/resources/library/interactivities/Cadran.wgt/help.html similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/help.html rename to resources/library/interactivities/Cadran.wgt/help.html diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/i18n/Messages.properties b/resources/library/interactivities/Cadran.wgt/i18n/Messages.properties similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/i18n/Messages.properties rename to resources/library/interactivities/Cadran.wgt/i18n/Messages.properties diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/i18n/Messages_fr.properties b/resources/library/interactivities/Cadran.wgt/i18n/Messages_fr.properties similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/i18n/Messages_fr.properties rename to resources/library/interactivities/Cadran.wgt/i18n/Messages_fr.properties diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/icon.png b/resources/library/interactivities/Cadran.wgt/icon.png similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/icon.png rename to resources/library/interactivities/Cadran.wgt/icon.png diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/index.html b/resources/library/interactivities/Cadran.wgt/index.html similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/index.html rename to resources/library/interactivities/Cadran.wgt/index.html diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/js/help-template.js b/resources/library/interactivities/Cadran.wgt/js/help-template.js similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/js/help-template.js rename to resources/library/interactivities/Cadran.wgt/js/help-template.js diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/js/help_fr-template.js b/resources/library/interactivities/Cadran.wgt/js/help_fr-template.js similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/js/help_fr-template.js rename to resources/library/interactivities/Cadran.wgt/js/help_fr-template.js diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/js/lib/jquery-1.7.1.min.js b/resources/library/interactivities/Cadran.wgt/js/lib/jquery-1.7.1.min.js similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/js/lib/jquery-1.7.1.min.js rename to resources/library/interactivities/Cadran.wgt/js/lib/jquery-1.7.1.min.js diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/js/lib/jquery-css-transform.js b/resources/library/interactivities/Cadran.wgt/js/lib/jquery-css-transform.js similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/js/lib/jquery-css-transform.js rename to resources/library/interactivities/Cadran.wgt/js/lib/jquery-css-transform.js diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js b/resources/library/interactivities/Cadran.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js rename to resources/library/interactivities/Cadran.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/js/lib/modernizr.js b/resources/library/interactivities/Cadran.wgt/js/lib/modernizr.js similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/js/lib/modernizr.js rename to resources/library/interactivities/Cadran.wgt/js/lib/modernizr.js diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/js/lib/mustache.js b/resources/library/interactivities/Cadran.wgt/js/lib/mustache.js similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/js/lib/mustache.js rename to resources/library/interactivities/Cadran.wgt/js/lib/mustache.js diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/js/lib/ubw-main.js b/resources/library/interactivities/Cadran.wgt/js/lib/ubw-main.js similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/js/lib/ubw-main.js rename to resources/library/interactivities/Cadran.wgt/js/lib/ubw-main.js diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/js/main.js b/resources/library/interactivities/Cadran.wgt/js/main.js similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/js/main.js rename to resources/library/interactivities/Cadran.wgt/js/main.js diff --git a/resources/inDevelopmentWidgets/Cadran.wgt/js/templates.js b/resources/library/interactivities/Cadran.wgt/js/templates.js similarity index 100% rename from resources/inDevelopmentWidgets/Cadran.wgt/js/templates.js rename to resources/library/interactivities/Cadran.wgt/js/templates.js diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/config.xml b/resources/library/interactivities/Morpion.wgt/config.xml similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/config.xml rename to resources/library/interactivities/Morpion.wgt/config.xml diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.eot b/resources/library/interactivities/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.eot rename to resources/library/interactivities/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.eot diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.svg b/resources/library/interactivities/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.svg rename to resources/library/interactivities/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.svg diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.ttf b/resources/library/interactivities/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.ttf rename to resources/library/interactivities/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.woff b/resources/library/interactivities/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.woff rename to resources/library/interactivities/Morpion.wgt/css/fonts/Lobster/Lobster_1.3-webfont.woff diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/Lobster/SIL Open Font License 1.1.txt b/resources/library/interactivities/Morpion.wgt/css/fonts/Lobster/SIL Open Font License 1.1.txt similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/Lobster/SIL Open Font License 1.1.txt rename to resources/library/interactivities/Morpion.wgt/css/fonts/Lobster/SIL Open Font License 1.1.txt diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/Lobster/demo.html b/resources/library/interactivities/Morpion.wgt/css/fonts/Lobster/demo.html similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/Lobster/demo.html rename to resources/library/interactivities/Morpion.wgt/css/fonts/Lobster/demo.html diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/Lobster/stylesheet.css b/resources/library/interactivities/Morpion.wgt/css/fonts/Lobster/stylesheet.css similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/Lobster/stylesheet.css rename to resources/library/interactivities/Morpion.wgt/css/fonts/Lobster/stylesheet.css diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.eot b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.eot rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.eot diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.svg b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.svg rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.svg diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.ttf b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.ttf rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.woff b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.woff rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime-webfont.woff diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.eot b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.eot rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.eot diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.svg b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.svg rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.svg diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.ttf b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.ttf rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.woff b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.woff rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch-webfont.woff diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.eot b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.eot rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.eot diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.svg b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.svg rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.svg diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.ttf b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.ttf rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.woff b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.woff rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Blotch_Italic-webfont.woff diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.eot diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.svg diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold-webfont.woff diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.eot diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.svg diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.woff b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.woff rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Bold_Italic-webfont.woff diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.eot b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.eot similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.eot rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.eot diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.svg b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.svg similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.svg rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.svg diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.ttf b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.ttf similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.ttf rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.ttf diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.woff b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.woff similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.woff rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/SF_Toontime_Italic-webfont.woff diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/ShyFonts Font License.txt b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/ShyFonts Font License.txt similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/ShyFonts Font License.txt rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/ShyFonts Font License.txt diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/demo.html b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/demo.html similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/demo.html rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/demo.html diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/stylesheet.css b/resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/stylesheet.css similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/fonts/SF-Toontime/stylesheet.css rename to resources/library/interactivities/Morpion.wgt/css/fonts/SF-Toontime/stylesheet.css diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/images/bg.png b/resources/library/interactivities/Morpion.wgt/css/images/bg.png similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/images/bg.png rename to resources/library/interactivities/Morpion.wgt/css/images/bg.png diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/images/pad-bd.png b/resources/library/interactivities/Morpion.wgt/css/images/pad-bd.png similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/images/pad-bd.png rename to resources/library/interactivities/Morpion.wgt/css/images/pad-bd.png diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/images/parameters-bg.png b/resources/library/interactivities/Morpion.wgt/css/images/parameters-bg.png similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/images/parameters-bg.png rename to resources/library/interactivities/Morpion.wgt/css/images/parameters-bg.png diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/images/player1.png b/resources/library/interactivities/Morpion.wgt/css/images/player1.png similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/images/player1.png rename to resources/library/interactivities/Morpion.wgt/css/images/player1.png diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/images/player2.png b/resources/library/interactivities/Morpion.wgt/css/images/player2.png similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/images/player2.png rename to resources/library/interactivities/Morpion.wgt/css/images/player2.png diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/images/result-bg.png b/resources/library/interactivities/Morpion.wgt/css/images/result-bg.png similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/images/result-bg.png rename to resources/library/interactivities/Morpion.wgt/css/images/result-bg.png diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/images/slate-bd.png b/resources/library/interactivities/Morpion.wgt/css/images/slate-bd.png similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/images/slate-bd.png rename to resources/library/interactivities/Morpion.wgt/css/images/slate-bd.png diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/images/slate-toolbar-edit.png b/resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-edit.png similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/images/slate-toolbar-edit.png rename to resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-edit.png diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/images/slate-toolbar-help.png b/resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-help.png similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/images/slate-toolbar-help.png rename to resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-help.png diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/images/slate-toolbar-reload.png b/resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-reload.png similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/images/slate-toolbar-reload.png rename to resources/library/interactivities/Morpion.wgt/css/images/slate-toolbar-reload.png diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/images/submit.png b/resources/library/interactivities/Morpion.wgt/css/images/submit.png similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/images/submit.png rename to resources/library/interactivities/Morpion.wgt/css/images/submit.png diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/images/toolbar-edit.png b/resources/library/interactivities/Morpion.wgt/css/images/toolbar-edit.png similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/images/toolbar-edit.png rename to resources/library/interactivities/Morpion.wgt/css/images/toolbar-edit.png diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/images/toolbar-help.png b/resources/library/interactivities/Morpion.wgt/css/images/toolbar-help.png similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/images/toolbar-help.png rename to resources/library/interactivities/Morpion.wgt/css/images/toolbar-help.png diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/images/toolbar-reload.png b/resources/library/interactivities/Morpion.wgt/css/images/toolbar-reload.png similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/images/toolbar-reload.png rename to resources/library/interactivities/Morpion.wgt/css/images/toolbar-reload.png diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/main.css b/resources/library/interactivities/Morpion.wgt/css/main.css similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/main.css rename to resources/library/interactivities/Morpion.wgt/css/main.css diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/ubw-help.css b/resources/library/interactivities/Morpion.wgt/css/ubw-help.css similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/ubw-help.css rename to resources/library/interactivities/Morpion.wgt/css/ubw-help.css diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/css/ubw-main.css b/resources/library/interactivities/Morpion.wgt/css/ubw-main.css similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/css/ubw-main.css rename to resources/library/interactivities/Morpion.wgt/css/ubw-main.css diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/help.html b/resources/library/interactivities/Morpion.wgt/help.html similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/help.html rename to resources/library/interactivities/Morpion.wgt/help.html diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/i18n/Messages.properties b/resources/library/interactivities/Morpion.wgt/i18n/Messages.properties similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/i18n/Messages.properties rename to resources/library/interactivities/Morpion.wgt/i18n/Messages.properties diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/i18n/Messages_fr.properties b/resources/library/interactivities/Morpion.wgt/i18n/Messages_fr.properties similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/i18n/Messages_fr.properties rename to resources/library/interactivities/Morpion.wgt/i18n/Messages_fr.properties diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/icon.png b/resources/library/interactivities/Morpion.wgt/icon.png similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/icon.png rename to resources/library/interactivities/Morpion.wgt/icon.png diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/images/failed.png b/resources/library/interactivities/Morpion.wgt/images/failed.png similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/images/failed.png rename to resources/library/interactivities/Morpion.wgt/images/failed.png diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/images/succeed.png b/resources/library/interactivities/Morpion.wgt/images/succeed.png similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/images/succeed.png rename to resources/library/interactivities/Morpion.wgt/images/succeed.png diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/index.html b/resources/library/interactivities/Morpion.wgt/index.html similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/index.html rename to resources/library/interactivities/Morpion.wgt/index.html diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/js/help-template.js b/resources/library/interactivities/Morpion.wgt/js/help-template.js similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/js/help-template.js rename to resources/library/interactivities/Morpion.wgt/js/help-template.js diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/js/help_fr-template.js b/resources/library/interactivities/Morpion.wgt/js/help_fr-template.js similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/js/help_fr-template.js rename to resources/library/interactivities/Morpion.wgt/js/help_fr-template.js diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/js/lib/jquery-1.7.1.min.js b/resources/library/interactivities/Morpion.wgt/js/lib/jquery-1.7.1.min.js similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/js/lib/jquery-1.7.1.min.js rename to resources/library/interactivities/Morpion.wgt/js/lib/jquery-1.7.1.min.js diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js b/resources/library/interactivities/Morpion.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js rename to resources/library/interactivities/Morpion.wgt/js/lib/jquery.i18n.properties-min-1.0.9.js diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/js/lib/modernizr.js b/resources/library/interactivities/Morpion.wgt/js/lib/modernizr.js similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/js/lib/modernizr.js rename to resources/library/interactivities/Morpion.wgt/js/lib/modernizr.js diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/js/lib/mustache.js b/resources/library/interactivities/Morpion.wgt/js/lib/mustache.js similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/js/lib/mustache.js rename to resources/library/interactivities/Morpion.wgt/js/lib/mustache.js diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/js/lib/ubw-main.js b/resources/library/interactivities/Morpion.wgt/js/lib/ubw-main.js similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/js/lib/ubw-main.js rename to resources/library/interactivities/Morpion.wgt/js/lib/ubw-main.js diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/js/main.js b/resources/library/interactivities/Morpion.wgt/js/main.js similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/js/main.js rename to resources/library/interactivities/Morpion.wgt/js/main.js diff --git a/resources/inDevelopmentWidgets/Morpion.wgt/js/templates.js b/resources/library/interactivities/Morpion.wgt/js/templates.js similarity index 100% rename from resources/inDevelopmentWidgets/Morpion.wgt/js/templates.js rename to resources/library/interactivities/Morpion.wgt/js/templates.js From 667be75e61862a870ff2fe79e69a3211917be804 Mon Sep 17 00:00:00 2001 From: shibakaneki Date: Thu, 6 Sep 2012 09:24:30 +0200 Subject: [PATCH 17/29] Fixed issue 862 --- src/board/UBBoardController.cpp | 30 ++++++++++++++++++++------- src/board/UBBoardController.h | 2 +- src/domain/UBGraphicsItemDelegate.cpp | 2 +- src/domain/UBGraphicsPolygonItem.cpp | 1 + src/domain/UBGraphicsStrokesGroup.cpp | 30 +++++++++++++++++---------- 5 files changed, 45 insertions(+), 20 deletions(-) diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index bcfc1ddd..bd8b3a95 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -533,7 +533,7 @@ void UBBoardController::duplicateScene() duplicateScene(mActiveSceneIndex); } -void UBBoardController::duplicateItem(UBItem *item) +void UBBoardController::duplicateItem(UBItem *item, QTransform trf) { if (!item) return; @@ -553,6 +553,7 @@ void UBBoardController::duplicateItem(UBItem *item) qreal shifting = UBSettings::settings()->objectFrameWidth; itemPos = commonItem->pos() + QPointF(shifting,shifting); itemSize = commonItem->boundingRect().size(); + commonItem->setSelected(false); } UBMimeType::Enum itemMimeType; @@ -611,18 +612,28 @@ void UBBoardController::duplicateItem(UBItem *item) { UBGraphicsGroupContainerItem* groupItem = dynamic_cast(item); 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); // The duplication already copies the item parameters - if(NULL != mLastCreatedItem){ - mLastCreatedItem->setSelected(true); - } + duplicateItem(pItem, groupItem->transform()); // The duplication already copies the item parameters } } + 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 + UBGraphicsGroupContainerItem* duplicatedGroup = dynamic_cast(selItems.at(0)); + if(NULL != duplicatedGroup){ + duplicatedGroup->setTransform(groupTransform); + } + } } return; break; @@ -633,10 +644,11 @@ void UBBoardController::duplicateItem(UBItem *item) QGraphicsItem *gitem = dynamic_cast(item->deepCopy()); if (gitem) { - qDebug() << "Adding a stroke: " << gitem; mActiveScene->addItem(gitem); gitem->setPos(itemPos); mLastCreatedItem = gitem; + + gitem->setSelected(true); } return; }break; @@ -652,6 +664,7 @@ void UBBoardController::duplicateItem(UBItem *item) if (createdGitem) createdGitem->setPos(itemPos); mLastCreatedItem = dynamic_cast(createdItem); + mLastCreatedItem->setSelected(true); } } @@ -2175,7 +2188,10 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint { foreach(UBItem* item, mimeData->items()) { - duplicateItem(item); + QGraphicsItem* pItem = dynamic_cast(item); + if(NULL != pItem){ + duplicateItem(item, pItem->transform()); + } } return; diff --git a/src/board/UBBoardController.h b/src/board/UBBoardController.h index 042ba24a..fb42565a 100644 --- a/src/board/UBBoardController.h +++ b/src/board/UBBoardController.h @@ -158,7 +158,7 @@ class UBBoardController : public UBDocumentContainer void moveSceneToIndex(int source, int target); void duplicateScene(int index); - void duplicateItem(UBItem *item); + void duplicateItem(UBItem *item, QTransform trf); void deleteScene(int index); bool cacheIsVisible() {return mCacheWidgetIsEnabled;} diff --git a/src/domain/UBGraphicsItemDelegate.cpp b/src/domain/UBGraphicsItemDelegate.cpp index 4abeb1a2..b86ac541 100644 --- a/src/domain/UBGraphicsItemDelegate.cpp +++ b/src/domain/UBGraphicsItemDelegate.cpp @@ -417,7 +417,7 @@ bool UBGraphicsItemDelegate::isLocked() const void UBGraphicsItemDelegate::duplicate() { - UBApplication::boardController->duplicateItem(dynamic_cast(delegated())); + UBApplication::boardController->duplicateItem(dynamic_cast(delegated()), delegated()->transform()); } void UBGraphicsItemDelegate::increaseZLevelUp() diff --git a/src/domain/UBGraphicsPolygonItem.cpp b/src/domain/UBGraphicsPolygonItem.cpp index b21f2760..d5b545de 100644 --- a/src/domain/UBGraphicsPolygonItem.cpp +++ b/src/domain/UBGraphicsPolygonItem.cpp @@ -173,6 +173,7 @@ void UBGraphicsPolygonItem::copyItemParameters(UBItem *copy) const cp->setColorOnDarkBackground(this->colorOnDarkBackground()); cp->setColorOnLightBackground(this->colorOnLightBackground()); + //cp->setTransform(transform()); cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType)); } diff --git a/src/domain/UBGraphicsStrokesGroup.cpp b/src/domain/UBGraphicsStrokesGroup.cpp index a5320924..a2360bd9 100644 --- a/src/domain/UBGraphicsStrokesGroup.cpp +++ b/src/domain/UBGraphicsStrokesGroup.cpp @@ -65,25 +65,33 @@ void UBGraphicsStrokesGroup::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) UBItem* UBGraphicsStrokesGroup::deepCopy() const { - UBGraphicsStrokesGroup* copy = new UBGraphicsStrokesGroup(); + UBGraphicsStrokesGroup* copy = new UBGraphicsStrokesGroup(); + QTransform groupTransform = transform(); + const_cast(this)->resetTransform(); - QList chl = childItems(); + QList chl = childItems(); - foreach(QGraphicsItem *child, chl) - { - UBGraphicsPolygonItem *polygon = dynamic_cast(child); - if (polygon) - copy->addToGroup(dynamic_cast(polygon->deepCopy())); - } - copyItemParameters(copy); + foreach(QGraphicsItem *child, chl) + { + UBGraphicsPolygonItem *polygon = dynamic_cast(child); + + if (polygon){ + QGraphicsItem* pItem = dynamic_cast(polygon->deepCopy()); + copy->addToGroup(pItem); + } + + } + const_cast(this)->setTransform(groupTransform); + copyItemParameters(copy); - return copy; + return copy; } void UBGraphicsStrokesGroup::copyItemParameters(UBItem *copy) const { - UBGraphicsStrokesGroup *cp = dynamic_cast(copy); + QGraphicsItem *cp = dynamic_cast(copy); + if(NULL != cp) { cp->setPos(this->pos()); From 22f36bed9d6cc4e70c64e00c55fc08053701d822 Mon Sep 17 00:00:00 2001 From: shibakaneki Date: Thu, 6 Sep 2012 11:08:17 +0200 Subject: [PATCH 18/29] Removed dirty code --- src/board/UBBoardController.cpp | 6 +++--- src/board/UBBoardController.h | 2 +- src/domain/UBGraphicsItemDelegate.cpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index bd8b3a95..ea9e4f12 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -533,7 +533,7 @@ void UBBoardController::duplicateScene() duplicateScene(mActiveSceneIndex); } -void UBBoardController::duplicateItem(UBItem *item, QTransform trf) +void UBBoardController::duplicateItem(UBItem *item) { if (!item) return; @@ -619,7 +619,7 @@ void UBBoardController::duplicateItem(UBItem *item, QTransform trf) foreach(QGraphicsItem* pIt, children){ UBItem* pItem = dynamic_cast(pIt); if(NULL != pItem){ - duplicateItem(pItem, groupItem->transform()); // The duplication already copies the item parameters + duplicateItem(pItem); } } groupItem->setTransform(groupTransform); @@ -2190,7 +2190,7 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint { QGraphicsItem* pItem = dynamic_cast(item); if(NULL != pItem){ - duplicateItem(item, pItem->transform()); + duplicateItem(item); } } diff --git a/src/board/UBBoardController.h b/src/board/UBBoardController.h index fb42565a..042ba24a 100644 --- a/src/board/UBBoardController.h +++ b/src/board/UBBoardController.h @@ -158,7 +158,7 @@ class UBBoardController : public UBDocumentContainer void moveSceneToIndex(int source, int target); void duplicateScene(int index); - void duplicateItem(UBItem *item, QTransform trf); + void duplicateItem(UBItem *item); void deleteScene(int index); bool cacheIsVisible() {return mCacheWidgetIsEnabled;} diff --git a/src/domain/UBGraphicsItemDelegate.cpp b/src/domain/UBGraphicsItemDelegate.cpp index b86ac541..4abeb1a2 100644 --- a/src/domain/UBGraphicsItemDelegate.cpp +++ b/src/domain/UBGraphicsItemDelegate.cpp @@ -417,7 +417,7 @@ bool UBGraphicsItemDelegate::isLocked() const void UBGraphicsItemDelegate::duplicate() { - UBApplication::boardController->duplicateItem(dynamic_cast(delegated()), delegated()->transform()); + UBApplication::boardController->duplicateItem(dynamic_cast(delegated())); } void UBGraphicsItemDelegate::increaseZLevelUp() From ca7be931c2a87049ce0bc55dc036440787929df4 Mon Sep 17 00:00:00 2001 From: bmagnin Date: Thu, 6 Sep 2012 11:40:42 +0200 Subject: [PATCH 19/29] Wording in Ordre lettres --- .../interactivities/Ordre lettres.wgt/locales/fr/js/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/library/interactivities/Ordre lettres.wgt/locales/fr/js/script.js b/resources/library/interactivities/Ordre lettres.wgt/locales/fr/js/script.js index e524e3c4..5d909d86 100644 --- a/resources/library/interactivities/Ordre lettres.wgt/locales/fr/js/script.js +++ b/resources/library/interactivities/Ordre lettres.wgt/locales/fr/js/script.js @@ -1,7 +1,7 @@ var sankoreLang = { display: "Afficher", edit: "Modifier", - short_desc: "Ecoutez le son et replacer les lettres dans l'ordre.", + short_desc: "Ecoutez le son et replacez les lettres dans l'ordre.", add: "Nouveau bloc", enter: "Saisir la consigne ici ...", example: "exemple", From 8f1f0d9cbb942493e2555ab9218708bae6a7693b Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Thu, 6 Sep 2012 13:07:49 +0300 Subject: [PATCH 20/29] SANKORE-1026 Navigation palette: thumbnails isn't refeshed after application added to the page --- src/api/UBWidgetMessageAPI.cpp | 2 - src/domain/UBGraphicsItemDelegate.cpp | 2 +- src/domain/UBGraphicsMediaItem.cpp | 1 + src/domain/UBGraphicsMediaItem.h | 1 - src/domain/UBGraphicsPDFItem.cpp | 2 + src/domain/UBGraphicsPDFItem.h | 1 - src/domain/UBGraphicsScene.cpp | 4 +- src/domain/UBGraphicsWebView.cpp | 152 -------------------------- src/domain/UBGraphicsWebView.h | 61 ----------- src/domain/UBGraphicsWidgetItem.cpp | 143 +++++++++++++++--------- src/domain/UBGraphicsWidgetItem.h | 20 ++-- src/domain/domain.pri | 2 - 12 files changed, 108 insertions(+), 283 deletions(-) delete mode 100644 src/domain/UBGraphicsWebView.cpp delete mode 100644 src/domain/UBGraphicsWebView.h diff --git a/src/api/UBWidgetMessageAPI.cpp b/src/api/UBWidgetMessageAPI.cpp index 306f2702..f145fba3 100644 --- a/src/api/UBWidgetMessageAPI.cpp +++ b/src/api/UBWidgetMessageAPI.cpp @@ -17,8 +17,6 @@ #include "core/UBApplication.h" -#include "domain/UBGraphicsWebView.h" - #include "core/memcheck.h" UBWidgetMessageAPI::UBWidgetMessageAPI(UBGraphicsWidgetItem *graphicsWidgetItem, QObject *parent) diff --git a/src/domain/UBGraphicsItemDelegate.cpp b/src/domain/UBGraphicsItemDelegate.cpp index d5620d12..45b626ef 100644 --- a/src/domain/UBGraphicsItemDelegate.cpp +++ b/src/domain/UBGraphicsItemDelegate.cpp @@ -406,7 +406,7 @@ void UBGraphicsItemDelegate::remove(bool canUndo) scene->removeItem(mFrame); /* this is performed because when removing delegated from scene while it contains flash content, segfault happens because of QGraphicsScene::removeItem() */ - UBGraphicsWebView *mDelegated_casted = dynamic_cast(mDelegated); + UBGraphicsWidgetItem *mDelegated_casted = dynamic_cast(mDelegated); if (mDelegated_casted) mDelegated_casted->setHtml(QString()); diff --git a/src/domain/UBGraphicsMediaItem.cpp b/src/domain/UBGraphicsMediaItem.cpp index 76bbbd53..d1e97583 100644 --- a/src/domain/UBGraphicsMediaItem.cpp +++ b/src/domain/UBGraphicsMediaItem.cpp @@ -351,3 +351,4 @@ void UBGraphicsMediaItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) event->accept(); } + diff --git a/src/domain/UBGraphicsMediaItem.h b/src/domain/UBGraphicsMediaItem.h index 308fbea9..b52c0ab6 100644 --- a/src/domain/UBGraphicsMediaItem.h +++ b/src/domain/UBGraphicsMediaItem.h @@ -112,7 +112,6 @@ protected: virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - virtual void clearSource(); Phonon::MediaObject *mMediaObject; diff --git a/src/domain/UBGraphicsPDFItem.cpp b/src/domain/UBGraphicsPDFItem.cpp index f918b3d2..425ab749 100644 --- a/src/domain/UBGraphicsPDFItem.cpp +++ b/src/domain/UBGraphicsPDFItem.cpp @@ -155,3 +155,5 @@ UBGraphicsPixmapItem* UBGraphicsPDFItem::toPixmapItem() const return pixmapItem; } + + diff --git a/src/domain/UBGraphicsPDFItem.h b/src/domain/UBGraphicsPDFItem.h index ac55190e..b41b15ec 100644 --- a/src/domain/UBGraphicsPDFItem.h +++ b/src/domain/UBGraphicsPDFItem.h @@ -63,7 +63,6 @@ class UBGraphicsPDFItem: public GraphicsPDFItem, public UBItem, public UBGraphic virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); -// UBGraphicsItemDelegate* mDelegate; }; #endif /* UBGRAPHICSPDFITEM_H_ */ diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 0cdb2ae6..f244bae8 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -2041,8 +2041,8 @@ void UBGraphicsScene::drawItems (QPainter * painter, int numItems, { if (!mTools.contains(rootItem(items[i]))) { - UBGraphicsPDFItem *pdfItem = qgraphicsitem_cast (items[i]); - if(!pdfItem || mRenderingContext == NonScreen) + bool isPdfItem = qgraphicsitem_cast (items[i]) != NULL; + if(!isPdfItem || mRenderingContext == NonScreen) { itemsFiltered[count] = items[i]; optionsFiltered[count] = options[i]; diff --git a/src/domain/UBGraphicsWebView.cpp b/src/domain/UBGraphicsWebView.cpp deleted file mode 100644 index cfc92dc3..00000000 --- a/src/domain/UBGraphicsWebView.cpp +++ /dev/null @@ -1,152 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include - -#include "UBGraphicsWebView.h" -#include "UBGraphicsScene.h" -#include "UBGraphicsItemDelegate.h" -#include "UBGraphicsDelegateFrame.h" - -#include "core/memcheck.h" - -UBGraphicsWebView::UBGraphicsWebView(QGraphicsItem* parent) - : QGraphicsWebView(parent) -{ - setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); - - mDelegate = new UBGraphicsItemDelegate(this, 0, true); - mDelegate->init(); - - setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); - - QGraphicsWebView::setAcceptHoverEvents(true); -} - - -UBGraphicsWebView::~UBGraphicsWebView() -{ - if (mDelegate) - delete mDelegate; -} - - -QVariant UBGraphicsWebView::itemChange(GraphicsItemChange change, const QVariant &value) -{ - if ((change == QGraphicsItem::ItemSelectedHasChanged) && scene()) { - if (isSelected()) - scene()->setActiveWindow(this); - else - if(scene()->activeWindow() == this) - scene()->setActiveWindow(0); - } - - QVariant newValue = mDelegate->itemChange(change, value); - return QGraphicsWebView::itemChange(change, newValue); -} - -void UBGraphicsWebView::setUuid(const QUuid &pUuid) -{ - UBItem::setUuid(pUuid); - setData(UBGraphicsItemData::ItemUuid, QVariant(pUuid)); //store item uuid inside the QGraphicsItem to fast operations with Items on the scene -} - -void UBGraphicsWebView::mousePressEvent(QGraphicsSceneMouseEvent *event) -{ - if (!mDelegate->mousePressEvent(event)) - setSelected(true); /* forcing selection */ - - QGraphicsWebView::mousePressEvent(event); -} - - -void UBGraphicsWebView::mouseMoveEvent(QGraphicsSceneMouseEvent *event) -{ - if (!mDelegate->mouseMoveEvent(event)) - QGraphicsWebView::mouseMoveEvent(event); -} - - -void UBGraphicsWebView::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) -{ - mDelegate->mouseReleaseEvent(event); - QGraphicsWebView::mouseReleaseEvent(event); -} - -void UBGraphicsWebView::wheelEvent(QGraphicsSceneWheelEvent *event) -{ - if (mDelegate->weelEvent(event)) - { - QGraphicsWebView::wheelEvent(event); - event->accept(); - } -} - -void UBGraphicsWebView::hoverEnterEvent(QGraphicsSceneHoverEvent *event) -{ - Q_UNUSED(event) - /* NOOP */ -} -void UBGraphicsWebView::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) -{ - Q_UNUSED(event) - /* NOOP */ -} - -void UBGraphicsWebView::setDelegate(UBGraphicsItemDelegate* pDelegate) -{ - if (mDelegate) - delete mDelegate; - - mDelegate = pDelegate; -} - - -void UBGraphicsWebView::resize(qreal w, qreal h) -{ - UBGraphicsWebView::resize(QSizeF(w, h)); -} - - -void UBGraphicsWebView::resize(const QSizeF & pSize) -{ - if (pSize != size()) { - QGraphicsWebView::setMaximumSize(pSize.width(), pSize.height()); - QGraphicsWebView::resize(pSize.width(), pSize.height()); - if (mDelegate) - mDelegate->positionHandles(); - if (scene()) - scene()->setModified(true); - } -} - -QSizeF UBGraphicsWebView::size() const -{ - return QGraphicsWebView::size(); -} - - -UBGraphicsScene* UBGraphicsWebView::scene() -{ - return static_cast(QGraphicsItem::scene()); -} - - -void UBGraphicsWebView::remove() -{ - if (mDelegate) - mDelegate->remove(true); -} diff --git a/src/domain/UBGraphicsWebView.h b/src/domain/UBGraphicsWebView.h deleted file mode 100644 index 45a2db7a..00000000 --- a/src/domain/UBGraphicsWebView.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef UBGRAPHICSWEBVIEW_H_ -#define UBGRAPHICSWEBVIEW_H_ - -#include -#include - -#include "UBItem.h" -#include "UBResizableGraphicsItem.h" - -class UBGraphicsItemDelegate; - -class UBGraphicsWebView: public QGraphicsWebView, public UBItem, public UBResizableGraphicsItem, public UBGraphicsItem -{ - public: - UBGraphicsWebView(QGraphicsItem* parent = 0); - virtual ~UBGraphicsWebView(); - - virtual void resize(qreal w, qreal h); - virtual void resize(const QSizeF & size); - - virtual QSizeF size() const; - - void setDelegate(UBGraphicsItemDelegate* pDelegate); - - virtual UBGraphicsScene* scene(); - - virtual void remove(); - - virtual UBGraphicsItemDelegate* Delegate() const { return mDelegate;} - - virtual void clearSource(){;} - virtual void setUuid(const QUuid &pUuid); - - protected: - - virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); - virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event); - virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); - virtual void wheelEvent(QGraphicsSceneWheelEvent *event); - virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event); - virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); - virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); - -}; - -#endif /* UBGRAPHICSWEBVIEW_H_ */ diff --git a/src/domain/UBGraphicsWidgetItem.cpp b/src/domain/UBGraphicsWidgetItem.cpp index 35bb32ad..c3aed833 100644 --- a/src/domain/UBGraphicsWidgetItem.cpp +++ b/src/domain/UBGraphicsWidgetItem.cpp @@ -45,7 +45,7 @@ bool UBGraphicsWidgetItem::sInlineJavaScriptLoaded = false; QStringList UBGraphicsWidgetItem::sInlineJavaScripts; UBGraphicsWidgetItem::UBGraphicsWidgetItem(const QUrl &pWidgetUrl, QGraphicsItem *parent) - : UBGraphicsWebView(parent) + : QGraphicsWebView(parent) , mInitialLoadDone(false) , mIsFreezable(true) , mIsResizable(false) @@ -58,7 +58,7 @@ UBGraphicsWidgetItem::UBGraphicsWidgetItem(const QUrl &pWidgetUrl, QGraphicsItem , mShouldMoveWidget(false) , mUniboardAPI(0) { - 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 QGraphicsWebView::setPage(new UBWebPage(this)); QGraphicsWebView::settings()->setAttribute(QWebSettings::JavaEnabled, true); @@ -84,9 +84,11 @@ UBGraphicsWidgetItem::UBGraphicsWidgetItem(const QUrl &pWidgetUrl, QGraphicsItem viewPalette.setBrush(QPalette::Window, QBrush(Qt::transparent)); setPalette(viewPalette); - UBGraphicsWidgetItemDelegate* delegate = new UBGraphicsWidgetItemDelegate(this); - delegate->init(); - setDelegate(delegate); + mDelegate = new UBGraphicsWidgetItemDelegate(this); + mDelegate->init(); + + setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); + QGraphicsWebView::setAcceptHoverEvents(true); } @@ -97,7 +99,7 @@ UBGraphicsWidgetItem::~UBGraphicsWidgetItem() void UBGraphicsWidgetItem::initialize() { - UBGraphicsWebView::setMinimumSize(nominalSize()); + setMinimumSize(nominalSize()); setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); // Necessary to set if we want z value to be assigned correctly if (mDelegate && mDelegate->frame() && resizable()) @@ -260,11 +262,6 @@ void UBGraphicsWidgetItem::removeAllDatastoreEntries() mDatastore.clear(); } -UBGraphicsItemDelegate* UBGraphicsWidgetItem::Delegate() const -{ - return mDelegate; -} - void UBGraphicsWidgetItem::remove() { if (mDelegate) @@ -360,6 +357,8 @@ QPixmap UBGraphicsWidgetItem::takeSnapshot() mIsTakingSnapshot = false; + mSnapshot = pixmap; + return pixmap; } @@ -502,7 +501,7 @@ bool UBGraphicsWidgetItem::event(QEvent *event) else if (event->type() == QEvent::ShortcutOverride) event->accept(); - return UBGraphicsWebView::event(event); + return QGraphicsWebView::event(event); } void UBGraphicsWidgetItem::dropEvent(QGraphicsSceneDragDropEvent *event) @@ -513,7 +512,10 @@ void UBGraphicsWidgetItem::dropEvent(QGraphicsSceneDragDropEvent *event) void UBGraphicsWidgetItem::mousePressEvent(QGraphicsSceneMouseEvent *event) { - UBGraphicsWebView::mousePressEvent(event); + if (!mDelegate->mousePressEvent(event)) + setSelected(true); /* forcing selection */ + + QGraphicsWebView::mousePressEvent(event); // did webkit consume the mouse press ? mShouldMoveWidget = !event->isAccepted() && (event->buttons() & Qt::LeftButton); @@ -527,24 +529,19 @@ void UBGraphicsWidgetItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { mShouldMoveWidget = false; - UBGraphicsWebView::mouseReleaseEvent(event); + mDelegate->mouseReleaseEvent(event); + QGraphicsWebView::mouseReleaseEvent(event); } void UBGraphicsWidgetItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event) { sendJSEnterEvent(); mDelegate->hoverEnterEvent(event); - UBGraphicsWebView::hoverEnterEvent(event); } void UBGraphicsWidgetItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) { sendJSLeaveEvent(); mDelegate->hoverLeaveEvent(event); - UBGraphicsWebView::hoverLeaveEvent(event); -} -void UBGraphicsWidgetItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event) -{ - UBGraphicsWebView::hoverMoveEvent(event); } void UBGraphicsWidgetItem::sendJSEnterEvent() @@ -572,33 +569,40 @@ void UBGraphicsWidgetItem::injectInlineJavaScript() void UBGraphicsWidgetItem::paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { - if (mIsFrozen) - painter->drawPixmap(0, 0, mSnapshot); + if (scene()->renderingContext() != UBGraphicsScene::Screen) + { + painter->drawPixmap(0, 0, snapshot()); + } else - UBGraphicsWebView::paint(painter, option, widget); - if (!mInitialLoadDone || mLoadIsErronous) { - QString message; + { + if (!mInitialLoadDone || mLoadIsErronous) + { + QString message; - if (mInitialLoadDone && mLoadIsErronous) - message = tr("Cannot load content"); - else - message = tr("Loading ..."); + if (mInitialLoadDone && mLoadIsErronous) + message = tr("Cannot load content"); + else + message = tr("Loading ..."); - painter->setFont(QFont("Arial", 12)); + painter->setFont(QFont("Arial", 12)); - QFontMetrics fm = painter->fontMetrics(); - QRect txtBoundingRect = fm.boundingRect(message); + QFontMetrics fm = painter->fontMetrics(); + QRect txtBoundingRect = fm.boundingRect(message); - txtBoundingRect.moveCenter(rect().center().toPoint()); - txtBoundingRect.adjust(-10, -5, 10, 5); + txtBoundingRect.moveCenter(rect().center().toPoint()); + txtBoundingRect.adjust(-10, -5, 10, 5); - painter->setPen(Qt::NoPen); - painter->setBrush(UBSettings::paletteColor); - painter->drawRoundedRect(txtBoundingRect, 3, 3); + painter->setPen(Qt::NoPen); + painter->setBrush(UBSettings::paletteColor); + painter->drawRoundedRect(txtBoundingRect, 3, 3); - painter->setPen(Qt::white); - painter->drawText(rect(), Qt::AlignCenter, message); + painter->setPen(Qt::white); + painter->drawText(rect(), Qt::AlignCenter, message); + } + else + QGraphicsWebView::paint(painter, option, widget); } + } void UBGraphicsWidgetItem::geometryChangeRequested(const QRect& geom) @@ -624,6 +628,52 @@ void UBGraphicsWidgetItem::mainFrameLoadFinished (bool ok) update(boundingRect()); } +void UBGraphicsWidgetItem::wheelEvent(QGraphicsSceneWheelEvent *event) +{ + if (mDelegate->weelEvent(event)) + { + QGraphicsWebView::wheelEvent(event); + event->accept(); + } +} + +QVariant UBGraphicsWidgetItem::itemChange(GraphicsItemChange change, const QVariant &value) +{ + if ((change == QGraphicsItem::ItemSelectedHasChanged) && scene()) { + if (isSelected()) + scene()->setActiveWindow(this); + else + if(scene()->activeWindow() == this) + scene()->setActiveWindow(0); + } + + QVariant newValue = mDelegate->itemChange(change, value); + return QGraphicsWebView::itemChange(change, newValue); +} + +void UBGraphicsWidgetItem::resize(qreal w, qreal h) +{ + UBGraphicsWidgetItem::resize(QSizeF(w, h)); +} + + +void UBGraphicsWidgetItem::resize(const QSizeF & pSize) +{ + if (pSize != size()) { + QGraphicsWebView::setMaximumSize(pSize.width(), pSize.height()); + QGraphicsWebView::resize(pSize.width(), pSize.height()); + if (mDelegate) + mDelegate->positionHandles(); + if (scene()) + scene()->setModified(true); + } +} + +QSizeF UBGraphicsWidgetItem::size() const +{ + return QGraphicsWebView::size(); +} + UBGraphicsAppleWidgetItem::UBGraphicsAppleWidgetItem(const QUrl& pWidgetUrl, QGraphicsItem *parent) @@ -881,21 +931,6 @@ UBItem* UBGraphicsW3CWidgetItem::deepCopy() const return copy; } -void UBGraphicsW3CWidgetItem::paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget) -{ - UBGraphicsScene::RenderingContext rc = UBGraphicsScene::Screen; - - if (scene()) - rc = scene()->renderingContext(); - - if (rc == UBGraphicsScene::NonScreen || rc == UBGraphicsScene::PdfExport) { - if (!snapshot().isNull()) - painter->drawPixmap(0, 0, snapshot()); - } - else - UBGraphicsWidgetItem::paint(painter, option, widget); -} - QMap UBGraphicsW3CWidgetItem::preferences() { return mPreferences; diff --git a/src/domain/UBGraphicsWidgetItem.h b/src/domain/UBGraphicsWidgetItem.h index c7074e2a..ed11a3c8 100644 --- a/src/domain/UBGraphicsWidgetItem.h +++ b/src/domain/UBGraphicsWidgetItem.h @@ -19,10 +19,11 @@ #include #include -#include "UBGraphicsWebView.h" - #include "core/UB.h" +#include "UBItem.h" +#include "UBResizableGraphicsItem.h" + class UBWidgetUniboardAPI; class UBGraphicsScene; class UBW3CWidgetAPI; @@ -38,7 +39,7 @@ struct UBWidgetType }; }; -class UBGraphicsWidgetItem : public UBGraphicsWebView +class UBGraphicsWidgetItem : public QGraphicsWebView, public UBItem, public UBResizableGraphicsItem, public UBGraphicsItem { Q_OBJECT @@ -52,6 +53,12 @@ class UBGraphicsWidgetItem : public UBGraphicsWebView virtual void initialize(); + virtual void resize(qreal w, qreal h); + virtual void resize(const QSizeF & size); + virtual QSizeF size() const; + + virtual UBGraphicsItemDelegate* Delegate() const { return mDelegate;} + QUrl mainHtml(); void loadMainHtml(); QUrl widgetUrl(); @@ -75,8 +82,6 @@ class UBGraphicsWidgetItem : public UBGraphicsWebView void removeDatastoreEntry(const QString& key); void removeAllDatastoreEntries(); - virtual UBGraphicsItemDelegate* Delegate() const; - virtual void remove(); void removeScript(); @@ -140,16 +145,18 @@ class UBGraphicsWidgetItem : public UBGraphicsWebView QMap mDatastore; QMap mPreferences; + virtual bool event(QEvent *event); virtual void dropEvent(QGraphicsSceneDragDropEvent *event); virtual void mousePressEvent(QGraphicsSceneMouseEvent *event); virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event); virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); - virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event); virtual void sendJSEnterEvent(); virtual void sendJSLeaveEvent(); virtual void injectInlineJavaScript(); + virtual void wheelEvent(QGraphicsSceneWheelEvent *event); + virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value); virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); protected slots: @@ -230,7 +237,6 @@ class UBGraphicsW3CWidgetItem : public UBGraphicsWidgetItem virtual void setUuid(const QUuid &pUuid); virtual UBItem* deepCopy() const; virtual void copyItemParameters(UBItem *copy) const; - virtual void paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget ); QMap preferences(); Metadata metadatas() const; diff --git a/src/domain/domain.pri b/src/domain/domain.pri index 1111106f..a7dbb78d 100644 --- a/src/domain/domain.pri +++ b/src/domain/domain.pri @@ -6,7 +6,6 @@ HEADERS += src/domain/UBGraphicsScene.h \ src/domain/UBDocumentUndoCommand.h \ src/domain/UBPageSizeUndoCommand.h \ src/domain/UBGraphicsProxyWidget.h \ - src/domain/UBGraphicsWebView.h \ src/domain/UBGraphicsSvgItem.h \ src/domain/UBGraphicsPolygonItem.h \ src/domain/UBItem.h \ @@ -35,7 +34,6 @@ SOURCES += src/domain/UBGraphicsScene.cpp \ src/domain/UBDocumentUndoCommand.cpp \ src/domain/UBPageSizeUndoCommand.cpp \ src/domain/UBGraphicsProxyWidget.cpp \ - src/domain/UBGraphicsWebView.cpp \ src/domain/UBGraphicsSvgItem.cpp \ src/domain/UBGraphicsPolygonItem.cpp \ src/domain/UBItem.cpp \ From 6ead8e7d8497ea1ceac0b98500b68c32fc1dd2df Mon Sep 17 00:00:00 2001 From: maximXbs Date: Thu, 6 Sep 2012 14:35:52 +0200 Subject: [PATCH 21/29] fixed Nuancier --- .../applications/Nuancier.wgt/css/layout.css | 2 + .../applications/Nuancier.wgt/index.html | 2 +- .../Nuancier.wgt/js/colorpicker.js | 76 +++++++++++++++---- .../Nuancier.wgt/js/jquery-1.8.1.min.js | 2 + 4 files changed, 66 insertions(+), 16 deletions(-) create mode 100644 resources/library/applications/Nuancier.wgt/js/jquery-1.8.1.min.js diff --git a/resources/library/applications/Nuancier.wgt/css/layout.css b/resources/library/applications/Nuancier.wgt/css/layout.css index f25d0c09..f81f88c1 100644 --- a/resources/library/applications/Nuancier.wgt/css/layout.css +++ b/resources/library/applications/Nuancier.wgt/css/layout.css @@ -34,6 +34,8 @@ html, body { font-size: 12px; line-height: 18px; color: #52697E; + width: 100%; + height: 100%; } body { text-align: center; diff --git a/resources/library/applications/Nuancier.wgt/index.html b/resources/library/applications/Nuancier.wgt/index.html index 073a6201..772d9e88 100644 --- a/resources/library/applications/Nuancier.wgt/index.html +++ b/resources/library/applications/Nuancier.wgt/index.html @@ -4,7 +4,7 @@ ColorPicker - jQuery plugin - + diff --git a/resources/library/applications/Nuancier.wgt/js/colorpicker.js b/resources/library/applications/Nuancier.wgt/js/colorpicker.js index 63bdb6db..0c7080ff 100644 --- a/resources/library/applications/Nuancier.wgt/js/colorpicker.js +++ b/resources/library/applications/Nuancier.wgt/js/colorpicker.js @@ -5,12 +5,16 @@ * * Dual licensed under the MIT and GPL licenses * - */ + */ (function ($) { var ColorPicker = function () { var ids = {}, penFlag = true, + tmpColor = { + a:"", + b:"" + }, inAction, charMin = 65, visible, @@ -108,7 +112,10 @@ } setSelector(col, cal.get(0)); setHue(col, cal.get(0)); - setNewColor(col, cal.get(0)); + //setNewColor(col, cal.get(0)); + $(cal.get(0)).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(col)); + tmpColor.a = cal.get(0); + tmpColor.b = col; cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]); }, blur = function (ev) { @@ -174,14 +181,25 @@ $(document).unbind('mousemove', moveHue); return false; }, - downSelector = function (ev) { + downSelector = function (ev) { var current = { cal: $(this).parent(), pos: $(this).offset() }; - current.preview = current.cal.data('colorpicker').livePreview; + current.preview = current.cal.data('colorpicker').livePreview; $(document).bind('mouseup', current, upSelector); $(document).bind('mousemove', current, moveSelector); + change.apply( + current.cal.data('colorpicker') + .fields + .eq(6) + .val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - current.pos.top))))/150, 10)) + .end() + .eq(5) + .val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - current.pos.left))))/150, 10)) + .get(0), + [current.preview] + ); }, moveSelector = function (ev) { change.apply( @@ -202,6 +220,18 @@ fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); $(document).unbind('mouseup', upSelector); $(document).unbind('mousemove', moveSelector); + if(penFlag){ + $("div.tools_change").removeClass("tools_compass"); + window.sankore.setTool('pen'); + window.sankore.setPenColor('#' + HSBToHex(tmpColor.b)); + sankore.returnStatus("PEN installed", penFlag); + } else { + $("div.tools_change").addClass("tools_compass"); + window.sankore.setTool('compass'); + window.sankore.setPenColor('#' + HSBToHex(tmpColor.b)); + sankore.returnStatus("Compass installed", penFlag); + } + //$(tmpColor.a).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(tmpColor.b)); return false; }, enterSubmit = function (ev) { @@ -249,7 +279,7 @@ cal.css({ left: left + 'px', top: top + 'px' - }); + }); if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) { cal.show(); } @@ -325,7 +355,7 @@ r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF) - }; + }; }, HexToHSB = function (hex) { return RGBToHSB(HexToRGB(hex)); @@ -379,43 +409,43 @@ rgb.r=t1; rgb.b=t2; rgb.g=t2+t3 - } + } else if(h<120) { rgb.g=t1; rgb.b=t2; rgb.r=t1-t3 - } + } else if(h<180) { rgb.g=t1; rgb.r=t2; rgb.b=t2+t3 - } + } else if(h<240) { rgb.b=t1; rgb.r=t2; rgb.g=t1-t3 - } + } else if(h<300) { rgb.b=t1; rgb.g=t2; rgb.r=t2+t3 - } + } else if(h<360) { rgb.r=t1; rgb.g=t2; rgb.b=t1-t3 - } + } else { rgb.r=0; rgb.g=0; rgb.b=0 - } + } } return { r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b) - }; + }; }, RGBToHex = function (rgb) { var hex = [ @@ -433,6 +463,9 @@ HSBToHex = function (hsb) { return RGBToHex(HSBToRGB(hsb)); }, + // changeCursor = function (flag) { + // alert(flag) + // }, restoreOriginal = function () { var cal = $(this).parent(); var col = cal.data('colorpicker').origColor; @@ -446,6 +479,15 @@ }; return { init: function (opt) { + if(window.sankore) + sankore.setTool("arrow"); + // $(document).mouseout(function(event){ + // if(event.target.tagName == "DIV" && event.target.className == "colorpicker") + // changeCursor(true) + // }) + // $("body").mouseleave(function(){ + // changeCursor(true) + // }) opt = $.extend({}, defaults, opt||{}); if (typeof opt.color == 'string') { opt.color = HexToHSB(opt.color); @@ -465,9 +507,13 @@ var cal = $(tpl).attr('id', id); if (options.flat) { cal.appendTo(this).show(); - } else { + } + else { cal.appendTo(document.body); } + // cal.bind("mouseover", function(){ + // window.sankore.setTool('arrow'); + // }) options.fields = cal .find('input') .bind('keyup', keyDown) diff --git a/resources/library/applications/Nuancier.wgt/js/jquery-1.8.1.min.js b/resources/library/applications/Nuancier.wgt/js/jquery-1.8.1.min.js new file mode 100644 index 00000000..ee68f35e --- /dev/null +++ b/resources/library/applications/Nuancier.wgt/js/jquery-1.8.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v@1.8.1 jquery.com | jquery.org/license */ +(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.1",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a=="object"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length||!d)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
t
",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c-1)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c-1)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,""+d),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j=0),h[l]&&j.push(k);j.length&&t.push({elem:f,matches:j})}n.length>o&&t.push({elem:this,matches:n.slice(o)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function $(a,b,c,d){c=c||[],b=b||q;var e,f,g,j,k=b.nodeType;if(k!==1&&k!==9)return[];if(!a||typeof a!="string")return c;g=h(b);if(!g&&!d)if(e=L.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&i(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return u.apply(c,t.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&X&&b.getElementsByClassName)return u.apply(c,t.call(b.getElementsByClassName(j),0)),c}return bk(a,b,c,d,g)}function _(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function ba(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bb(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bc(a,b,c,d){var e,g,h,i,j,k,l,m,n,p,r=!c&&b!==q,s=(r?"":"")+a.replace(H,"$1"),u=y[o][s];if(u)return d?0:t.call(u,0);j=a,k=[],m=0,n=f.preFilter,p=f.filter;while(j){if(!e||(g=I.exec(j)))g&&(j=j.slice(g[0].length),h.selector=l),k.push(h=[]),l="",r&&(j=" "+j);e=!1;if(g=J.exec(j))l+=g[0],j=j.slice(g[0].length),e=h.push({part:g.pop().replace(H," "),string:g[0],captures:g});for(i in p)(g=S[i].exec(j))&&(!n[i]||(g=n[i](g,b,c)))&&(l+=g[0],j=j.slice(g[0].length),e=h.push({part:i,string:g.shift(),captures:g}));if(!e)break}return l&&(h.selector=l),d?j.length:j?$.error(a):t.call(y(s,k),0)}function bd(a,b,e,f){var g=b.dir,h=s++;return a||(a=function(a){return a===e}),b.first?function(b){while(b=b[g])if(b.nodeType===1)return a(b)&&b}:f?function(b){while(b=b[g])if(b.nodeType===1&&a(b))return b}:function(b){var e,f=h+"."+c,i=f+"."+d;while(b=b[g])if(b.nodeType===1){if((e=b[o])===i)return b.sizset;if(typeof e=="string"&&e.indexOf(f)===0){if(b.sizset)return b}else{b[o]=i;if(a(b))return b.sizset=!0,b;b.sizset=!1}}}}function be(a,b){return a?function(c){var d=b(c);return d&&a(d===!0?c:d)}:b}function bf(a,b,c){var d,e,g=0;for(;d=a[g];g++)f.relative[d.part]?e=bd(e,f.relative[d.part],b,c):e=be(e,f.filter[d.part].apply(null,d.captures.concat(b,c)));return e}function bg(a){return function(b){var c,d=0;for(;c=a[d];d++)if(c(b))return!0;return!1}}function bh(a,b,c,d){var e=0,f=b.length;for(;e0?i(h,c,g):[]}function bj(a,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q,r,s=0,t=a.length,v=S.POS,w=new RegExp("^"+v.source+"(?!"+A+")","i"),x=function(){var a=1,c=arguments.length-2;for(;al){g+=k.slice(l,n.index),l=p,q=[c],J.test(g)&&(m&&(q=m),m=e);if(r=O.test(g))g=g.slice(0,-5).replace(J,"$&*"),l++;n.length>1&&n[0].replace(w,x),m=bi(g,n[1],n[2],q,m,r)}g=""}}o||(g+=k),o=!1}g?J.test(g)?bh(g,m||[c],d,e):$(g,c,d,e?e.concat(m):m):u.apply(d,m)}return t===1?d:$.uniqueSort(d)}function bk(a,b,e,g,h){a=a.replace(H,"$1");var i,k,l,m,n,o,p,q,r,s,v=bc(a,b,h),w=b.nodeType;if(S.POS.test(a))return bj(v,b,e,g);if(g)i=t.call(g,0);else if(v.length===1){if((o=t.call(v[0],0)).length>2&&(p=o[0]).part==="ID"&&w===9&&!h&&f.relative[o[1].part]){b=f.find.ID(p.captures[0].replace(R,""),b,h)[0];if(!b)return e;a=a.slice(o.shift().string.length)}r=(v=N.exec(o[0].string))&&!v.index&&b.parentNode||b,q="";for(n=o.length-1;n>=0;n--){p=o[n],s=p.part,q=p.string+q;if(f.relative[s])break;if(f.order.test(s)){i=f.find[s](p.captures[0].replace(R,""),r,h);if(i==null)continue;a=a.slice(0,a.length-q.length)+q.replace(S[s],""),a||u.apply(e,t.call(i,0));break}}}if(a){k=j(a,b,h),c=k.dirruns++,i==null&&(i=f.find.TAG("*",N.test(a)&&b.parentNode||b));for(n=0;m=i[n];n++)d=k.runs++,k(m)&&e.push(m)}return e}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=a.document,r=q.documentElement,s=0,t=[].slice,u=[].push,v=function(a,b){return a[o]=b||!0,a},w=function(){var a={},b=[];return v(function(c,d){return b.push(c)>f.cacheLength&&delete a[b.shift()],a[c]=d},a)},x=w(),y=w(),z=w(),A="[\\x20\\t\\r\\n\\f]",B="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",C=B.replace("w","w#"),D="([*^$|!~]?=)",E="\\["+A+"*("+B+")"+A+"*(?:"+D+A+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+C+")|)|)"+A+"*\\]",F=":("+B+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+E+")|[^:]|\\\\.)*|.*))\\)|)",G=":(nth|eq|gt|lt|first|last|even|odd)(?:\\(((?:-\\d)?\\d*)\\)|)(?=[^-]|$)",H=new RegExp("^"+A+"+|((?:^|[^\\\\])(?:\\\\.)*)"+A+"+$","g"),I=new RegExp("^"+A+"*,"+A+"*"),J=new RegExp("^"+A+"*([\\x20\\t\\r\\n\\f>+~])"+A+"*"),K=new RegExp(F),L=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,M=/^:not/,N=/[\x20\t\r\n\f]*[+~]/,O=/:not\($/,P=/h\d/i,Q=/input|select|textarea|button/i,R=/\\(?!\\)/g,S={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),NAME:new RegExp("^\\[name=['\"]?("+B+")['\"]?\\]"),TAG:new RegExp("^("+B.replace("w","w*")+")"),ATTR:new RegExp("^"+E),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+A+"*(even|odd|(([+-]|)(\\d*)n|)"+A+"*(?:([+-]|)"+A+"*(\\d+)|))"+A+"*\\)|)","i"),POS:new RegExp(G,"ig"),needsContext:new RegExp("^"+A+"*[>+~]|"+G,"i")},T=function(a){var b=q.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},U=T(function(a){return a.appendChild(q.createComment("")),!a.getElementsByTagName("*").length}),V=T(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),W=T(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),X=T(function(a){return a.innerHTML="",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),Y=T(function(a){a.id=o+0,a.innerHTML="
",r.insertBefore(a,r.firstChild);var b=q.getElementsByName&&q.getElementsByName(o).length===2+q.getElementsByName(o+0).length;return e=!q.getElementById(o),r.removeChild(a),b});try{t.call(r.childNodes,0)[0].nodeType}catch(Z){t=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}$.matches=function(a,b){return $(a,null,null,b)},$.matchesSelector=function(a,b){return $(b,null,null,[a]).length>0},g=$.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=g(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=g(b);return c},h=$.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},i=$.contains=r.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:r.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},$.attr=function(a,b){var c,d=h(a);return d||(b=b.toLowerCase()),f.attrHandle[b]?f.attrHandle[b](a):W||d?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},f=$.selectors={cacheLength:50,createPseudo:v,match:S,order:new RegExp("ID|TAG"+(Y?"|NAME":"")+(X?"|CLASS":"")),attrHandle:V?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:e?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:U?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(R,""),a[3]=(a[4]||a[5]||"").replace(R,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||$.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&$.error(a[0]),a},PSEUDO:function(a,b,c){var d,e;if(S.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(d=a[4])K.test(d)&&(e=bc(d,b,c,!0))&&(e=d.indexOf(")",d.length-e)-d.length)&&(d=d.slice(0,e),a[0]=a[0].slice(0,e)),a[2]=d;return a.slice(0,3)}},filter:{ID:e?function(a){return a=a.replace(R,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(R,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(R,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=x[o][a];return b||(b=x(a,new RegExp("(^|"+A+")"+a+"("+A+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return b?function(d){var e=$.attr(d,a),f=e+"";if(e==null)return b==="!=";switch(b){case"=":return f===c;case"!=":return f!==c;case"^=":return c&&f.indexOf(c)===0;case"*=":return c&&f.indexOf(c)>-1;case"$=":return c&&f.substr(f.length-c.length)===c;case"~=":return(" "+f+" ").indexOf(c)>-1;case"|=":return f===c||f.substr(0,c.length+1)===c+"-"}}:function(b){return $.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a==="nth"){var e=s++;return function(a){var b,f,g=0,h=a;if(c===1&&d===0)return!0;b=a.parentNode;if(b&&(b[o]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[o]=e}return f=a.sizset-d,c===0?f===0:f%c===0&&f/c>=0}}return function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e,g=f.pseudos[a]||f.pseudos[a.toLowerCase()];return g||$.error("unsupported pseudo: "+a),g[o]?g(b,c,d):g.length>1?(e=[a,a,"",b],function(a){return g(a,0,e)}):g}},pseudos:{not:v(function(a,b,c){var d=j(a.replace(H,"$1"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!f.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:v(function(a){return function(b){return(b.textContent||b.innerText||g(b)).indexOf(a)>-1}}),has:v(function(a){return function(b){return $(a,b).length>0}}),header:function(a){return P.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:_("radio"),checkbox:_("checkbox"),file:_("file"),password:_("password"),image:_("image"),submit:ba("submit"),reset:ba("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return Q.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e",a.querySelectorAll("[selected]").length||e.push("\\["+A+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),T(function(a){a.innerHTML="

",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+A+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=e.length&&new RegExp(e.join("|")),bk=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a)))if(d.nodeType===9)try{return u.apply(f,t.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){var j,k,l,m=d.getAttribute("id"),n=m||o,p=N.test(a)&&d.parentNode||d;m?n=n.replace(c,"\\$&"):d.setAttribute("id",n),j=bc(a,d,h),n="[id='"+n+"']";for(k=0,l=j.length;k0})}(),f.setFilters.nth=f.setFilters.eq,f.filters=f.pseudos,$.attr=p.attr,p.find=$,p.expr=$.selectors,p.expr[":"]=p.expr.pseudos,p.unique=$.uniqueSort,p.text=$.getText,p.isXMLDoc=$.isXML,p.contains=$.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
","
"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{cj=f.href}catch(cy){cj=e.createElement("a"),cj.href="",cj=cj.href}ck=ct.exec(cj.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:cj,isLocal:cn.test(ck[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=""+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,ck[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==ck[1]&&i[2]==ck[2]&&(i[3]||(i[1]==="http:"?80:443))==(ck[3]||(ck[1]==="http:"?80:443)))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cQ.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||".5",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1&&j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file From c556535e67449fbc62049aed9a1ab15cea6753f1 Mon Sep 17 00:00:00 2001 From: Didier Bathily Date: Sat, 1 Sep 2012 14:34:03 +0200 Subject: [PATCH 22/29] Math apps updates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Brings improvements Balance - No more empty weight - Left weight should not go to right scale - Reducing the size of half Morpion - Correction de l'évaluation des lignes Train - Add <1 and <0.1 options Signed-off-by: Didier Bathily --- .../interactivities/Balance.wgt/config.xml | 4 +- .../Balance.wgt/css/images/delete.png | Bin 552 -> 1588 bytes .../Balance.wgt/css/images/graduations.png | Bin 1856 -> 2373 bytes .../Balance.wgt/css/images/pivot.png | Bin 1521 -> 2318 bytes .../Balance.wgt/css/images/scale.png | Bin 47788 -> 17368 bytes .../Balance.wgt/css/images/scales.png | Bin 31434 -> 9037 bytes .../Balance.wgt/css/images/weight-add.png | Bin 1280 -> 1776 bytes .../Balance.wgt/css/images/weight.png | Bin 2410 -> 2615 bytes .../interactivities/Balance.wgt/css/main.css | 81 ++++++++-------- .../interactivities/Balance.wgt/js/main.js | 88 +++++++++--------- .../Balance.wgt/js/templates.js | 4 +- .../interactivities/Morpion.wgt/js/main.js | 3 +- .../interactivities/Train.wgt/js/main.js | 25 +++-- .../interactivities/Train.wgt/js/templates.js | 1 + .../Transformation.wgt/css/main.css | 1 + 15 files changed, 112 insertions(+), 95 deletions(-) diff --git a/resources/library/interactivities/Balance.wgt/config.xml b/resources/library/interactivities/Balance.wgt/config.xml index 738583bf..8b6e7741 100644 --- a/resources/library/interactivities/Balance.wgt/config.xml +++ b/resources/library/interactivities/Balance.wgt/config.xml @@ -3,8 +3,8 @@ xmlns:ub="http://uniboard.mnemis.com/widgets" id="http://www.njin.fr/sankore/apps/balance" version="1.0" - width="1025" - height="880" + width="540" + height="450" ub:resizable="true"> La Balance diff --git a/resources/library/interactivities/Balance.wgt/css/images/delete.png b/resources/library/interactivities/Balance.wgt/css/images/delete.png index 22bf8f29603e78ca5548f17751fd8211441790ee..c896c1abbc0a44f40c0193a172da944e532f40fb 100644 GIT binary patch delta 1585 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 literal 1856 zcmc(fX;4#F6vy8Kkswg0Wm9Pl;0CB6Ac`z*2}@c;42c4YC=e^4Ng)vexPVFwK`0WC zrG$uD46@56B~FMtLX!qTwuXcTkO*O4gsAj(`lZvEe(s&Q=bn4d|D5xC@6LNEzCND% ztJbc9AV?qQg~fw449ss3n!u`(zY~H*lX?J0Kp+r(1Bc{btMh|b02P9CSN}EPcIl;$ z;LwET?oY!+lTOjXDP$xe{2U2FJD}{GP-uI}p5y_bF#k*8M>$Q4JrzxY_J>hINJx+H zXi_XCI+BXS`0X6wKfD1!8ryxn3GP7u|Bm3`U;xnA*a&Q0UEP1d96WgNUm*_<4{*X_ zvBY9AaN641fW=@iEiEm;iI0y5_Md}HCWCEJQBhY{7jU>-ZbwH4aO~~v(P%WA%}z~C z1sI?p!07Ai@UTE209l=#oq$%QQjLy|DwRqgc>er3Xe5JrG)N?p`ucjHY;A1?nt_1b2BqDAo}UkCvd*Bw6wgu%!f88!7FQ|;eGrdSVMD#)=F)J&MI9!{Vxm* zzg+#5k+F%X*_yTM%)kC-J<`I`YQx6OTdZwtZMSaSwrxAg4sGwS!_jf)E~nkj&Mq!4 zuC8uwZu>Fr9-dyfZ@s;}!5#bH{rvp>0|J9ig`GJQ9uaYtOr}IrX|(e(v2=P|e0)N} zg~V$N7Ay5e`pwL&+`RmP0#0Gkox8>Nc_k$e9+Z|=H$37C1kKN0zIxpz68|P?f7AK4 zr%&2HFgW~fL^(P(Jv)a&89fBwT0RcDpWyXUm3{Egx}!!68FixV@dZ0x?^m>UL(pmS3b8`#p*Rw zTwd5eAcI8OlXNSsT5~Pg4UN)Rsc+%F&uRxxvHI#;@h$JKu@1CEM9>+tFRE64S24o6(LT zCL$Y1@0$LRGn?*0kJdPA1bAy^JdQY01k5w8K)gyhd#Coa7{Vjba8 z5Y)KRtnw1?&g;CZw!A@eheUz=%VgCfaHFL6dTK_JzIl`Xgpqnc3Hx zY@*8B&FzRK9@e__AYQ#KQY(YuWLI81s)?It?^7`0L|W*S3Rl_BeC3b29|s*v86_X> zjo+cI*CtC_k*F(JFNsKlq4p3=TYF_DkJP+Xl{%z49D(&|7UhnvYz~g<)q*!)zMv&v zvV@RsS^1kdgV~EiQr$D(@3d65Tr`c=4A0Vl@(kdU)zWe+<|EDvJKx!INba=JYkAQ2 z?c^mcoOEpahI2WjD*;ebH9N;*YDvS_tZJM#9hCXuZLX~BmrE{>Bdy~pgRpD5OVqH_ zk9%P`b>gh4f?ip>$nVdrNfR}}P$`GZ*_XKyu9E-c5S+82j5vBYzTP-r9tySKQP|@j z&G!il^^+bQDYzG%F74d~X9ao&xy9^Jh>c1k1!defDY`AXc>RY9x9--ytmPL?MF|d9 z?pj=p?5UOr?*-~7SiBIQe)YVZ+I!Jr4F##dnQ!im6uel=WS(H4GOJgZ2qPa~`3wt4 WYKmc8U?KR`Ksa|FY{h|-SN;U34^4jn diff --git a/resources/library/interactivities/Balance.wgt/css/images/pivot.png b/resources/library/interactivities/Balance.wgt/css/images/pivot.png index d5137e29944d8f44eda18af32247ad73b75275be..72e8e264e1e2fabff4b53c1c23334bcc4485d36d 100644 GIT binary patch literal 2318 zcmV+p3Gw!cP)4Tx05}naRo`#hR1`jmZ&IWdKOk5~hl<6oRa0BJ8yc;~21%2p?MfD<>DVeH z9(p*dx19w`~g7O0}n_%Aq@s%d)fBDv`JHkDym6Hd+5XuAtvnwRpGmK zVkc9?T=n|PIo~X-eVh__(Z?q}P9Z-Dj?gOW6|D%o20XmjW-qs4UjrD(li^iv8@eK9k+ZFm zVRFymFOPAzG5-%Pn|1W;U4vNroTa&AxDScmEA~{ri9gr1^c?U@uwSpaNnw8l_>cP1 zd;)kMQS_;jeRSUEM_*s96y65j1$)tOrwdK{YIQMt92l|D^(E_=$Rjw{b!QT@q!)ni zR`|5oW9X5n$Wv+HVc@|^eX5yXnsHX8PF3UX~a6)MwxDE0HaPjyrlI!;jX{6Kvuh*8ej?;85ekN$?5uuCiS zBTvvVG+XTxAO{m@bvM#Jr)z6J><&E22D|vq?Y?Vkbo_DijopiF$2PET#mZ8eu=y$(ArYkv7@Ex`GL?QCc!_*KFrd&;n1r7 zqW-CFs9&fT)ZaU5gc&=gBz-DaCw(vdOp0__x+47~U6sC(E(JNe@4cTT*n6*E zVH4eoU1-&7pEV~_PRe`a7v+@vy!^5}8?Y3)UmlaER00009a7bBm000XT000XT0n*)m`~Uz1kV!;AR9Fe^ znLSh6N)(3Ul`P8$@PMI+2@_YhNfBmJrXs%~WxD&jZkIB@fmA7(p`l3yLvV%(4g*B^ zQ&Qe%@ft-qxkGM1F7D3AXFrb4d3090+Fe(&EPM2CsiK6AbgirD9=W;YqDld*S>3 zUjk}Wl_bY%N+hk0yHS8fc~8$K#KK!C?35>gp4EdE4&3qWmc!Pbn}LvGqoy zu`Re~K@il$H55=HW0@jIG;BnQ#%Wgsu~8AAC(d9v9Ex$Ue|~=cUgp1WPu>^he3}WE zzhQZK`K7>Kg<%*8uCM43sb4|m?dS7=W{RQ_WZ3WbV}b5mTwHuWDep6X(=9-!C|O-u zS$QqEEp=^QkxF#YZT~qbsw7Wc9SU;q?Ck8FqB(ND^A7xc!6`^C3hqr5MQueco^<0M zfx{mUs+2A+F2?GS=c;PR=UYL3a}17a8bQ|}SzTLO`&(e`dc7X2>^bH8kb+8jyvP;fjj0U!|g#5Z-0g}eonl9dbyDQ`*n>b@g~bC>XiPkh5b zy<;-U(9NmDniLqV42Yji8_wn*m-xgt3}RWIFkMFuZ>y`Tb}G?J%l!7>fcV6>AS1DC z!$jgMk@1C41Cwx{I@?mtkAVRem|(LoD!kwe!O$;<>&7b#u)stu?_gb@F21cpmCNYb z8@lUU1s0fKGptHfXiUDX^8%Q_1e;NRw*^-fyqyP&k5f`Pg9$d?!IlavndTvSE*^9< zOf92KQ<<`+76(+61dBCh(`fFAlqr4m771a3t;{*E$TYM3Kj6%;+@aEFWy|hs?ji{j zY$kb>bX8zcI#=@`Ot2Y~nT|+V`p*?0Ot7)TI?$GIB*3|vs9}Q5bi3U{Hq~>~%|cQ4 ziU~H>gFS`wqhv5A-3(wbVd~k@s~y#@Hq-+F&ckRnu)ri9yB@44l%I4gu`lXSb!C3` zgph`?z@+uy&7MR@5Ibs!1z6UU!z{x2P0YEC@;2E$37`Tz)dqS;;U$V?OgWs}gfQr+ z?h8!3jP{+AwB34ga`Hh>u%|FDNP#8TgCu<66W=i4)GEV%-ZJIy=Tix8;d|eHy zTfXPBU#82a4|J{l+rK=tH%`XkXgJyWP?56-n8(M*cRRq80h?STDLh_!ydJCu+ggG@(^XU3P)|%mari4(2ZcFL z_XJGBy7q@(hwndMe*V29V4z%*VTQXM<;`aEi4HaGA-ba3&{b9Y7+6WGhzQ(cfQnFaQ7m07*qoM6N<$g4iEoO8@`> literal 1521 zcmah|do+}37@w=#m@y27Va%8d=E5*TXsUIa;*ch623@F`3XQQd6I!cvNhL%IU5GZz z37cD|8nlVD2#cgS$*pv@ZA&TbtSI|x+Q0XA&ilR3`#itj?|HuWd|!?*coW)yU;u$Y z&;kB_Az&A-E~tNNPrxuXf&FZ2|NMQ#>U3h)|N`8(&=;{2T4E%G$N5m zp-@25-rgR}qjdmUJ3Bj&0W|HLAP-D{xrK#=wka3}Xo0P^J1_@6z#nLVn^x}N;J{!o zm`o;%#bUGBj*gB_PEH&S$JyE0#l?lo(O$7wrFv#IH#Cg7p8xV&@eU_=w~Ie%@iCuIJ~%quzO8v+<3U>Na(1 zgF2PtU~Y<2KUA7D+b*xPadOoRMyjTqm5@?#u8huCKq}iKJ6ldYTRPT0S3qr6z`(qOmV>U6#2q&*|D_X+zV+zG-D1k z*75S51GCvp7l%hq^jsD{{qFi>W2Zr{;1E}$Rm1~V1u}xvqBG_ucuL0I$Y036XG!a+ z4USfQLlN#MM&7-8Y{iGOQfw{@d?zF;}uhjIE~Kh=m!z4L<9 zkk-Z+7Nlhpx<}{Uy!YrfIM27Sjf3$&oPN}o$V}>OIWBsBc8r9spmeVP26n?B4O-CeF?QR1LuB3sjf_Ibnl={ zR7_GVs+Qyyh}X(pyIwDgJ$GvWN00QFw$oBB3>t7T2ow!9z5tCsPT z_zKjDM$*u=6gM`nAeR5#x-NL-ap@=B$+2{C4o7L+mHSVq3iNhw?%sXM zMq|5i%lvfpBWeFg6f^SWEd>rS@u38B`~054%e5kfD&^|uq1dxYqFo!j4EsHDm-fQU zc!Pt1OBu70nsV$K=NNZxxt_W|$Cs7lGf`ZaMdM!!VI(CTq1F;MFo}62bhv7fPj+qo ymfbo<(1&VX5+WvAKmMbbiHkp2Ro99C3?=*$XWzFSa|!(UkN`oj-&LRJ%zps{TqW!P diff --git a/resources/library/interactivities/Balance.wgt/css/images/scale.png b/resources/library/interactivities/Balance.wgt/css/images/scale.png index 386184c280ff306cd3f3b53eb27fd236c6e5f52b..b201a38642add7ddee5353700f7f3c2aaa2d3168 100644 GIT binary patch literal 17368 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 P00000NkvXXu0mjf)0QvDk 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 Z{{sapk7EO3VB7!z002ovPDHLkV1i~H9Y_EG diff --git a/resources/library/interactivities/Balance.wgt/css/images/scales.png b/resources/library/interactivities/Balance.wgt/css/images/scales.png index 1fea726c02ea21812433a23b6de5564c33466ad3..cb25be600759870de83cdbbe85faeb1256b7d3ec 100644 GIT binary patch literal 9037 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

8o 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 C77H!_ diff --git a/resources/library/interactivities/Balance.wgt/css/images/weight-add.png b/resources/library/interactivities/Balance.wgt/css/images/weight-add.png index 9e043661859f549641c48ca66f985c5c63539fda..329d49693a91fb8608a916fcdadf9cfcbb43bd94 100644 GIT binary patch delta 1775 zcmVd-#s*1~rR_=< zrRmrzB;-0biK!b0+v&EdPkVtk2K)g)*#i$qJRuDRVtd(t_Q14BQ-><5Nl1I>#1A1R z?FCigyLMtHQ^Z{L`pY@rIp;g)UfV=HUum_P8C8gutFE2TB$bn=7L=Y%iqf;xO9Rxa z=}s+?%gqul!4>z;>){=W2+Qq}?*2~pBfol!+|h|5Prz;!9eo-23{lL~Yqm=izX$vH zX}1R4^BnMh(>4SGs{)sOoDz7^$0t2bAwLO@&?@T{tq8mZJiORuFSlV|0~pAY;Z<%M zx*}$gv#pY0a?jx}k8!s#{|_#kb@c3AgIN2VrMY9c4~gC@_Ef%!Ki9SN9Pmr9U$41I zVSfeqkNVPl0(c)$^r@14bl&GjUtg^h-Ui+Ud(m)zrwdK{YIQMt92l|D^(E_=$Rjw{ zb!QT@q!)niR`|5oW9X5n$Wv+HVc@|^eX5yXnsHX-FZ2WU_|EOVYio4;ar2Gci*3g? zux`e-!uZ&)u`T>C&?6>) z!9U18%+k5x(5n8T{;6)LU#J(<-#coA89SyVeJXt`{V07WeJ}k?iga1JBK;&?mA;WK z1v$I#y`Lr6d#_(%6WxkkXw_?sDx6s1tqd5cR(r+J^8>eC9KviwE_(z2fJiNaO~QQ#!EU`yJ^^;@xz& z(RhIORnI3xJ0CY1|E@P0J6|II7SUz%KUn~Acx)Rh6Ok|%e*$tzL_t(I5oMD-Xj4%X z$KQJ;MIQmNGKXf%4waU6R( zotneL!*83Lf16*@>2&vBy+sjC$B)+j{{EB6WYSjt-vEaf@t4mQ;H|*6?X!cy;Dfr~ zrPJQtUR{PQ*L9CH+_|~A#Y7@;6;7*Kjm2X3ze5ct8t!Ao#Iq7A{L1NVKFlg(x?>Kty-MyLNt+>!pqbw)Gl7y&1egTtc($A{mU zpPzTb;qZA~<7jtxx4N*fa8CRFD)C@;cJ?7+A~`rbI`sJPJK8hX>)lX19v_!VrO0qN zq$^u;e<JLeyJ%t!VuC2lsUbAAYtnESJkGRMTU6P^;B=Y(w&Ty}n+lRF;Y4 z8bf$=B>3}Hy3o`c6dmaipAm^nYw}DbOeV-hhCib$pl4+b|#adP;_Z& z>E_zn+EbnUyGEn&o=6T3k1i;nXq{9Nb80xcPSP{}^xlyE|6*d&nDP^h-=;TvI379> R4XgkF002ovPDHLkV1gm6ab*Ai literal 1280 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 Ze*s4{zAizHj1>R?002ovPDHLkV1kbB@@N16 literal 2410 zcmV-w36=JVP) zeIs6EI4YD^QE`=(mF43ek8k433HWki0w|rB;5^EMW#mJ?T<3*_LrdZn)Z3>{ovIie z8~q*yqobqH*Vp%-=H~O0&CSh|lpjNzC_^9er8-=9>8zYxyLPounbYZn;o)n(#KgosRF`9{mNw`JZg1IQ210j{ zm-(BejdLw;qHpmxz5%txVlfX4T)hh2-Q5r3BG zcviQ1`S~N7XU8u$ZQAt50|ySYWoBgF&&tY%>}*9@Sy_;kttjny8eF<`2`*p03@1*U z0QBWSroy3=Ly&UlkOJUDI%H;M3Lo;NI%x<>iA%Avg(!YzX4ZqlhY$CE{L#nz_%8M{ zzLPE3ERvr;sNpwOtXR4JlijgwvC{@gi{*UPbW9GBbFVLmG>^WOgb`^~YjvA>`1 zStKu)C~oM@xOd*!n39rGrO(siL#Xa#XS{AZgeoD(FIyyS;$dMztB_+jo%ofY{7K;VUW($baLa7;3 zvp+R+x!G(MKC<8GiqlYBT#N(GhkRTzMxz1B%gX`pK6sbv5-EvnR7O6Ad;=6072`}h zEn=uKEmHg-d#K0{`-8L2XD}N2KmBy?oMw@HyCooNH*em&DL>!PSXEv1-`d(*u%alf zwQ?FxqRc8}6?Lpo88tCiqqh}hSe$3bWrAF*2xM!emAyidY zgVkyk@vT<1FIImV=$|#vPqp39{$iX;OXWRXZf?bf4IAFWvHqOL9QKFna)$C6-YP%A z=LSbZL&JBCjZM(l*cet#;p|On{?YXs8XMs3*|SiDGw0yJgJN?X8XAP5!9f@l8p85A zQAV?ie6cU#`_Lq}Id|39*ZXi*eSu?6<|Xzrvj}=zr)l*TuIp*+%vW@aoG)FxcoAA! zTEwQ>(a{bgBTm!^(9-GfV2en5rd*pUP`o!1NE00MFZr4Av7P>|h$se|iqO1}O5{kXpj!}$1^_)`OE ze0&^jL!wM=$H9`XMI480cS!wF+j02o+HJNOT&52Jk-%(W22r74Vo@JH3XG~klgWqF zXOKE5azY@_*G^2GYYI>sThobvo79PLX#8 zwJEjXpVoSFpE)Fh^pQS?rtE-!6?93qO;7|mgL5t%l^{1qyqz(jh|3w9Z|L4AsXZ$*7tUTs8W)Km2I5Cos zTG88PAE0)lj%?k!wR0|j7CRUMf=5_7X>2^k4|vQm%wT!A|xLQhMoq0gI}ka6QIQg<}pCt<}to9+m};+6rjZd=4k?XDuA9f znE3?qB!CX%UF-@0dRAZ<$QA0#d;^&aAiCYrvGYHpQc-FAeq+WwE1la)<+hW#FAD-> zHh^OJW%2~R{Uz}?wh&6$!Q| c___c5AB?T169DKmX#fBK07*qoM6N<$f*vlM00000 diff --git a/resources/library/interactivities/Balance.wgt/css/main.css b/resources/library/interactivities/Balance.wgt/css/main.css index 616ed26e..baf0662b 100644 --- a/resources/library/interactivities/Balance.wgt/css/main.css +++ b/resources/library/interactivities/Balance.wgt/css/main.css @@ -15,7 +15,7 @@ } #scalesWrapper { - padding: 0px 100px 200px; + padding: 0px 100px 100px; position: relative; } @@ -29,10 +29,10 @@ .scale { position: absolute; - width: 250px; + width: 125px; height: 0; - padding: 200px 45px 50px; - top: 145px; + padding: 90px 20px 35px; + top: 72px; background: url(images/scale.png) no-repeat center bottom; } @@ -45,12 +45,12 @@ #leftScale { left: 0; - margin-left: -150px; + margin-left: -75px; } #rightScale { right: 0; - margin-right: -150px; + margin-right: -75px; } #tray { @@ -58,27 +58,27 @@ background-color: red; top: 50%; margin-top: -1px; - width: 550px; - height: 288px; + width: 225px; + height: 144px; background: url("images/scales.png") no-repeat center; } #graduations { - width: 100px; - height: 30px; + width: 50px; + height: 15px; position: absolute; top: 0; left: 50%; - margin-left: -50px; + margin-left: -25px; background: url(images/graduations.png) center no-repeat; } #pivot { position: absolute; - width: 80px; - height: 80px; - left: 235px; - top: 106px; + width: 40px; + height: 40px; + left: 93px; + top: 52px; background: url(images/pivot.png) center no-repeat; } @@ -101,14 +101,14 @@ text-indent: -100px; - width: 68px; - height: 70px; + width: 34px; + height: 34px; margin-left: 10px; cursor: pointer; - border-radius: 4px; + border-radius: 2px; border: 1px solid rgba(255,255,255, 0.15); background: rgba(0,0,0, 0.15) url(images/weight-add.png) center no-repeat; } @@ -124,15 +124,15 @@ .object input { border: none; - width: 40px; - padding: none; - margin: 0 2px 0 0; + width: 100%; + padding: 0; + margin: 0; text-align: center; - font-size: 16px; + font-size: 12px; color: #000; - border-radius: 3px; + border-radius: 2px; background-color: #FFF; box-shadow: 0 1px 2px rgba(0,0,0, 0.4); } @@ -140,7 +140,7 @@ .object .tools { display: none; position: absolute; - top: -23px; + top: -13px; width: 100%; text-align: center; } @@ -150,8 +150,8 @@ position: relative; overflow: hidden; cursor: pointer; - width: 22px; - height: 22px; + width: 11px; + height: 11px; text-indent: -100px; border: none; margin: 0; @@ -180,7 +180,7 @@ position: absolute; width: 100%; height: 20px; - top: 72px; + top: 36px; border-radius: 4px; box-shadow: 0 3px 0 #999, 0 1px 2px rgba(0,0,0, .65); background-color: #CCC; @@ -198,9 +198,9 @@ #weights { display: none; position: absolute; - top: 40px; - right: 40px; - width: 230px; + top: 20px; + right: 0px; + width: 160px; } .onEdit #weights { @@ -213,21 +213,26 @@ .weight { position: relative; - width: 64px; - height: 70px; - + + width: 32px; + height: 35px; + margin-left: 10px; margin-bottom: 30px; - font-size: 16px; + font-size: 12px; text-align: center; color: #CCC; text-shadow: 0 -1px 0 #000; } +.weight .unit { + font-size: 10px; +} + .weight .amount { height: 100%; - padding: 4px 4px 0; + padding: 4px 2px 0; border-radius: 4px; border: 1px solid rgba(255,255,255, 0.15); background-color: rgba(0,0,0, 0.15); @@ -235,10 +240,10 @@ .weight > div.bg { position: absolute; - left: -3px; + left: -2px; bottom: -18px; - width: 70px; - height: 64px; + width: 35px; + height: 32px; background: url(images/weight.png) no-repeat center bottom; } diff --git a/resources/library/interactivities/Balance.wgt/js/main.js b/resources/library/interactivities/Balance.wgt/js/main.js index 089559fb..9b5bc3f6 100644 --- a/resources/library/interactivities/Balance.wgt/js/main.js +++ b/resources/library/interactivities/Balance.wgt/js/main.js @@ -1,14 +1,47 @@ +var weighValues = [500,200,100,50,20,10]; + function onTemplateLoadedCallback(app) { - $("#weights").append($(Mustache.render(weightTemplate, {weight: 500}))); - $("#weights").append($(Mustache.render(weightTemplate, {weight: 200}))); - $("#weights").append($(Mustache.render(weightTemplate, {weight: 100}))); - $("#weights").append($(Mustache.render(weightTemplate, {weight: 50}))); - $("#weights").append($(Mustache.render(weightTemplate, {weight: 20}))); - $("#weights").append($(Mustache.render(weightTemplate, {weight: 10}))); + $.each(weighValues, function(){ + $("#weights").append($(Mustache.render(weightTemplate, {weight: this}))); + }); $("#weights > .weight").draggable({helper: "clone"}); + + $("#leftScale").droppable({ + accept: ".object", + drop: function(event, ui) { + if($(ui.draggable).hasClass("inScale")) + return; + + var object = $(ui.draggable).clone(); + object.data("weight", $(ui.draggable).data("weight")); + + object.addClass("inScale"); + $("#leftScale").append(object); + + placeObject($("#leftScale"), object); + + refreshScales(); + + object.draggable({ + stop: function(event, ui) { + if($(ui.helper).hasClass("onOut")) { + $(ui.helper).remove(); + refreshScales(); + } + } + }); + }, + out: function(event, ui) { + $(ui.draggable).addClass("onOut"); + }, + over: function(event, ui) { + $(ui.draggable).removeClass("onOut"); + } + }); + $("#rightScale").droppable({ - accept: ".weight", + accept: ".weight.right", drop: function(event, ui) { if($(ui.draggable).hasClass("inScale")) return; @@ -72,6 +105,10 @@ function objectForGUID(app, guid) { window.object = guid; var objectUi = $(Mustache.render(objectTemplate, window)); var weight = getWeightFor(app.parameters, guid); + + if(!app.onEdit && (weight == undefined || $.trim(weight) == "")) + weight = weighValues[Math.floor(Math.random()*weighValues.length)]; + if(weight !== undefined) { objectUi.data("weight", weight); objectUi.find("input[name=weight]").val(weight); @@ -137,8 +174,8 @@ function placeObject($container, $object) { var count = $container.children().size() - 1; - var left = width * (count % 4) + 25; - var bottom = height * (Math.floor(count / 4)) + 40; + var left = width * (count % 4) + 5; + var bottom = height * (Math.floor(count / 4)) + 12; log("Place at ["+left+" , "+bottom+"]"); $object.css("left", left+"px").css("bottom", bottom+"px"); @@ -215,39 +252,6 @@ function reloadApp(app) { } refreshScales(); - - $("#leftScale").droppable({ - accept: ".object", - drop: function(event, ui) { - if($(ui.draggable).hasClass("inScale")) - return; - - var object = $(ui.draggable).clone(); - object.data("weight", $(ui.draggable).data("weight")); - - object.addClass("inScale"); - $("#leftScale").append(object); - - placeObject($("#leftScale"), object); - - refreshScales(); - - object.draggable({ - stop: function(event, ui) { - if($(ui.helper).hasClass("onOut")) { - $(ui.helper).remove(); - refreshScales(); - } - } - }); - }, - out: function(event, ui) { - $(ui.draggable).addClass("onOut"); - }, - over: function(event, ui) { - $(ui.draggable).removeClass("onOut"); - } - }); if(app.onEdit) { diff --git a/resources/library/interactivities/Balance.wgt/js/templates.js b/resources/library/interactivities/Balance.wgt/js/templates.js index 1f683036..e18176e9 100644 --- a/resources/library/interactivities/Balance.wgt/js/templates.js +++ b/resources/library/interactivities/Balance.wgt/js/templates.js @@ -23,8 +23,8 @@ var objectTemplate = '

'+ ''+ '
'+ - '
g
'+ + '
'+ '
'; var weightTemplate = - '
{{weight}}g
'; \ No newline at end of file + '
{{weight}}
'; \ No newline at end of file diff --git a/resources/library/interactivities/Morpion.wgt/js/main.js b/resources/library/interactivities/Morpion.wgt/js/main.js index 70b0c546..1473f7e6 100644 --- a/resources/library/interactivities/Morpion.wgt/js/main.js +++ b/resources/library/interactivities/Morpion.wgt/js/main.js @@ -148,7 +148,8 @@ function isGameEnd(i, j) { } function isCellsWin(cells) { - if((player == cells.eq(0).data("player") == cells.eq(1).data("player") == cells.eq(2).data("player"))) + var n = ((3*player) - (parseInt(cells.eq(0).data("player")) + parseInt(cells.eq(1).data("player")) + parseInt(cells.eq(2).data("player")))); + if( n == 0 ) return cells; return null; } diff --git a/resources/library/interactivities/Train.wgt/js/main.js b/resources/library/interactivities/Train.wgt/js/main.js index a8d264e9..d77f3fca 100644 --- a/resources/library/interactivities/Train.wgt/js/main.js +++ b/resources/library/interactivities/Train.wgt/js/main.js @@ -8,9 +8,18 @@ function revert($e) { elmt.className = elmt.className.replace(/(d(\d+))/, ""); } +function getN(range) { + if(range > 1) + return Math.floor(Math.random()*range); + else if(range == 1) + return Math.round(Math.random()*10)/10; + else if(range == 0.1) + return Math.round(Math.random()*0.1*100)/100; +} + function reloadApp(app) { var operator = app.parameters.value("operator"); - var range = parseInt(app.parameters.value("range")); + var range = parseFloat(app.parameters.value("range")); var count = parseInt(app.parameters.value("count")); $scene = $("#scene"); @@ -25,16 +34,12 @@ function reloadApp(app) { var meeted = []; for (var i = 0; i < count; i++) { - var n = Math.floor(Math.random()*range); - - while($.inArray(n, meeted) != -1) { - if(range > 1) - n = Math.floor(Math.random()*range); - else - n = Math.round(Math.random()*range*100)/100; - } - + + var n = getN(range); + while($.inArray(n, meeted) != -1) + n = getN(range); + meeted.push(n); $label = $("
"+n+"
"); diff --git a/resources/library/interactivities/Train.wgt/js/templates.js b/resources/library/interactivities/Train.wgt/js/templates.js index e62c381e..f53d27dd 100644 --- a/resources/library/interactivities/Train.wgt/js/templates.js +++ b/resources/library/interactivities/Train.wgt/js/templates.js @@ -31,6 +31,7 @@ var parametersTemplate = '
'+ '