From c9d4166395913e827464b685d3d574af0e03bf57 Mon Sep 17 00:00:00 2001 From: Ivan Ilin Date: Mon, 12 Dec 2011 10:40:00 +0200 Subject: [PATCH 01/33] first zvalue reimplementation --- src/adaptors/UBSvgSubsetAdaptor.cpp | 35 ++++++++----- src/board/UBBoardController.cpp | 3 +- src/core/UB.h | 1 + src/domain/UBGraphicsAudioItem.cpp | 3 +- src/domain/UBGraphicsItemDelegate.cpp | 6 ++- .../UBGraphicsItemTransformUndoCommand.cpp | 7 ++- src/domain/UBGraphicsPDFItem.cpp | 6 ++- src/domain/UBGraphicsPixmapItem.cpp | 3 +- src/domain/UBGraphicsPolygonItem.cpp | 4 +- src/domain/UBGraphicsScene.cpp | 52 +++++++++++++------ src/domain/UBGraphicsSvgItem.cpp | 6 ++- src/domain/UBGraphicsTextItem.cpp | 3 +- src/domain/UBGraphicsVideoItem.cpp | 3 +- src/domain/UBGraphicsVideoItemDelegate.cpp | 3 +- src/domain/UBGraphicsWidgetItem.cpp | 3 +- src/domain/UBItem.cpp | 6 +++ src/domain/UBItem.h | 1 + src/gui/UBLibraryWidget.cpp | 2 +- src/gui/UBThumbnailWidget.h | 4 +- src/pdf-merger/Object.h | 2 +- src/tools/UBGraphicsCache.cpp | 9 ++-- src/tools/UBGraphicsCompass.cpp | 3 +- src/tools/UBGraphicsCurtainItem.cpp | 7 +-- src/tools/UBGraphicsCurtainItemDelegate.cpp | 14 ++--- src/tools/UBGraphicsProtractor.cpp | 3 +- src/tools/UBGraphicsRuler.cpp | 3 +- src/tools/UBGraphicsTriangle.cpp | 3 +- 27 files changed, 131 insertions(+), 64 deletions(-) diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index cdaea1e2..660a2f5a 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -29,6 +29,7 @@ #include "domain/UBGraphicsTextItem.h" #include "domain/UBAbstractWidget.h" #include "domain/UBGraphicsStroke.h" +#include "domain/UBItem.h" #include "tools/UBGraphicsRuler.h" #include "tools/UBGraphicsCompass.h" @@ -1337,11 +1338,13 @@ UBGraphicsPolygonItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::polygonItemFromPol if (!ubZValue.isNull()) { - polygonItem->setZValue(ubZValue.toString().toFloat()); +// polygonItem->setZValue (ubZValue.toString().toFloat()); + UBGraphicsItem::assignZValue(polygonItem, ubZValue.toString().toFloat()); } else { - polygonItem->setZValue(mGroupZIndex); +// polygonItem->setZValue(mGroupZIndex); + UBGraphicsItem::assignZValue(polygonItem, mGroupZIndex); } QStringRef ubFillOnDarkBackground = mXmlReader.attributes().value(mNamespaceUri, "fill-on-dark-background"); @@ -1444,11 +1447,13 @@ UBGraphicsPolygonItem* UBSvgSubsetAdaptor::UBSvgSubsetReader::polygonItemFromLin if (!ubZValue.isNull()) { - polygonItem->setZValue(ubZValue.toString().toFloat()); +// polygonItem->setZValue(ubZValue.toString().toFloat()); + UBGraphicsItem::assignZValue(polygonItem, ubZValue.toString().toFloat()); } else { - polygonItem->setZValue(mGroupZIndex); +// polygonItem->setZValue(mGroupZIndex); + UBGraphicsItem::assignZValue(polygonItem, mGroupZIndex); } @@ -1587,7 +1592,8 @@ QList UBSvgSubsetAdaptor::UBSvgSubsetReader::polygonItem { UBGraphicsPolygonItem* polygonItem = new UBGraphicsPolygonItem(QLineF(points.at(i), points.at(i + 1)), lineWidth); polygonItem->setColor(brushColor); - polygonItem->setZValue(zValue); +// polygonItem->setZValue(zValue); + UBGraphicsItem::assignZValue(polygonItem, zValue); polygonItem->setColorOnDarkBackground(colorOnDarkBackground); polygonItem->setColorOnLightBackground(colorOnLightBackground); @@ -1931,7 +1937,8 @@ void UBSvgSubsetAdaptor::UBSvgSubsetReader::graphicsItemFromSvg(QGraphicsItem* g if (!ubZValue.isNull()) { - gItem->setZValue(ubZValue.toString().toFloat()); +// gItem->setZValue(ubZValue.toString().toFloat()); + UBGraphicsItem::assignZValue(gItem, ubZValue.toString().toFloat()); } UBItem* ubItem = dynamic_cast(gItem); @@ -2484,7 +2491,8 @@ UBGraphicsRuler* UBSvgSubsetAdaptor::UBSvgSubsetReader::rulerFromSvg() graphicsItemFromSvg(ruler); - ruler->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetRuler); +// ruler->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetRuler); + UBGraphicsItem::assignZValue(ruler, UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetRuler); ruler->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool)); QStringRef svgWidth = mXmlReader.attributes().value("width"); @@ -2542,7 +2550,8 @@ UBGraphicsCompass* UBSvgSubsetAdaptor::UBSvgSubsetReader::compassFromSvg() graphicsItemFromSvg(compass); - compass->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetCompass); + //compass->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetCompass); + UBGraphicsItem::assignZValue(compass, UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetCompass); compass->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool)); QStringRef svgX = mXmlReader.attributes().value("x"); @@ -2606,7 +2615,8 @@ UBGraphicsProtractor* UBSvgSubsetAdaptor::UBSvgSubsetReader::protractorFromSvg() { UBGraphicsProtractor* protractor = new UBGraphicsProtractor(); - protractor->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetProtractor); +// protractor->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetProtractor); + UBGraphicsItem::assignZValue(protractor, UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetProtractor); protractor->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool)); graphicsItemFromSvg(protractor); @@ -2676,7 +2686,8 @@ UBGraphicsTriangle* UBSvgSubsetAdaptor::UBSvgSubsetReader::triangleFromSvg() { UBGraphicsTriangle* triangle = new UBGraphicsTriangle(); - triangle->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetTriangle); +// triangle->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetTriangle); + UBGraphicsItem::assignZValue(triangle, UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetTriangle); triangle->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool)); graphicsItemFromSvg(triangle); @@ -2695,7 +2706,6 @@ UBGraphicsTriangle* UBSvgSubsetAdaptor::UBSvgSubsetReader::triangleFromSvg() triangle->setRect(svgX.toString().toFloat(), svgY.toString().toFloat(), svgWidth.toString().toFloat(), svgHeight.toString().toFloat(), orientation); } - triangle->setVisible(true); return triangle; } @@ -2703,7 +2713,8 @@ UBGraphicsTriangle* UBSvgSubsetAdaptor::UBSvgSubsetReader::triangleFromSvg() UBGraphicsCache* UBSvgSubsetAdaptor::UBSvgSubsetReader::cacheFromSvg() { UBGraphicsCache* pCache = new UBGraphicsCache(); - //pCache->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetCache); + pCache->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetCache); +// UBGraphicsItem::assignZValue(pCache, UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetCache); pCache->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool)); graphicsItemFromSvg(pCache); diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 829c07ef..5c63fec8 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -1842,7 +1842,8 @@ void UBBoardController::processMimeData(const QMimeData* pMimeData, const QPoint if (gi) { - gi->setZValue(mActiveScene->getNextObjectZIndex()); +// gi->setZValue(mActiveScene->getNextObjectZIndex()); + UBGraphicsItem::assignZValue(gi, mActiveScene->getNextObjectZIndex()); mActiveScene->addItem(gi); gi->setPos(gi->pos() + QPointF(50, 50)); } diff --git a/src/core/UB.h b/src/core/UB.h index fbe7dd77..83a4b456 100644 --- a/src/core/UB.h +++ b/src/core/UB.h @@ -78,6 +78,7 @@ struct UBGraphicsItemData ItemLayerType , ItemLocked , ItemEditable//for text only + , ItemOwnZValue }; }; diff --git a/src/domain/UBGraphicsAudioItem.cpp b/src/domain/UBGraphicsAudioItem.cpp index 12a2eae6..d38e27b7 100644 --- a/src/domain/UBGraphicsAudioItem.cpp +++ b/src/domain/UBGraphicsAudioItem.cpp @@ -95,7 +95,8 @@ UBItem* UBGraphicsAudioItem::deepCopy() const UBGraphicsAudioItem *copy = new UBGraphicsAudioItem(audioUrl, parentItem()); copy->setPos(this->pos()); - copy->setZValue(this->zValue()); +// copy->setZValue(this->zValue()); + UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->setFlag(QGraphicsItem::ItemIsMovable, true); copy->setFlag(QGraphicsItem::ItemIsSelectable, true); diff --git a/src/domain/UBGraphicsItemDelegate.cpp b/src/domain/UBGraphicsItemDelegate.cpp index 7cc8fa96..de335a3a 100644 --- a/src/domain/UBGraphicsItemDelegate.cpp +++ b/src/domain/UBGraphicsItemDelegate.cpp @@ -72,7 +72,8 @@ void UBGraphicsItemDelegate::init() { mFrame = new UBGraphicsDelegateFrame(this, QRectF(0, 0, 0, 0), mFrameWidth, mRespectRatio); mFrame->hide(); - mFrame->setZValue(UBGraphicsScene::toolLayerStart + 1); +// mFrame->setZValue(UBGraphicsScene::toolLayerStart + 1); + UBGraphicsItem::assignZValue(mFrame, UBGraphicsScene::toolLayerStart + 1); mFrame->setFlag(QGraphicsItem::ItemIsSelectable, true); mDeleteButton = new DelegateButton(":/images/close.svg", mDelegated, mFrame); @@ -92,7 +93,8 @@ void UBGraphicsItemDelegate::init() foreach(DelegateButton* button, mButtons) { button->hide(); - button->setZValue(UBGraphicsScene::toolLayerStart + 2); +// button->setZValue(UBGraphicsScene::toolLayerStart + 2); + UBGraphicsItem::assignZValue(button, UBGraphicsScene::toolLayerStart + 2); button->setFlag(QGraphicsItem::ItemIsSelectable, true); } } diff --git a/src/domain/UBGraphicsItemTransformUndoCommand.cpp b/src/domain/UBGraphicsItemTransformUndoCommand.cpp index 0d799f0a..e56027ea 100644 --- a/src/domain/UBGraphicsItemTransformUndoCommand.cpp +++ b/src/domain/UBGraphicsItemTransformUndoCommand.cpp @@ -15,6 +15,7 @@ #include "UBGraphicsItemTransformUndoCommand.h" #include "UBResizableGraphicsItem.h" +#include "domain/UBItem.h" #include "core/memcheck.h" @@ -48,7 +49,8 @@ void UBGraphicsItemTransformUndoCommand::undo() { mItem->setPos(mPreviousPosition); mItem->setTransform(mPreviousTransform); - mItem->setZValue(mPreviousZValue); +// mItem->setZValue(mPreviousZValue); + UBGraphicsItem::assignZValue(mItem, mPreviousZValue); UBResizableGraphicsItem* resizableItem = dynamic_cast(mItem); @@ -60,7 +62,8 @@ void UBGraphicsItemTransformUndoCommand::redo() { mItem->setPos(mCurrentPosition); mItem->setTransform(mCurrentTransform); - mItem->setZValue(mCurrentZValue); +// mItem->setZValue(mCurrentZValue); + UBGraphicsItem::assignZValue(mItem, mCurrentZValue); UBResizableGraphicsItem* resizableItem = dynamic_cast(mItem); diff --git a/src/domain/UBGraphicsPDFItem.cpp b/src/domain/UBGraphicsPDFItem.cpp index 7838358f..704ba676 100644 --- a/src/domain/UBGraphicsPDFItem.cpp +++ b/src/domain/UBGraphicsPDFItem.cpp @@ -84,7 +84,8 @@ UBItem* UBGraphicsPDFItem::deepCopy() const UBGraphicsPDFItem *copy = new UBGraphicsPDFItem(mRenderer, mPageNumber, parentItem()); copy->setPos(this->pos()); - copy->setZValue(this->zValue()); +// copy->setZValue(this->zValue()); + UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->setFlag(QGraphicsItem::ItemIsMovable, true); copy->setFlag(QGraphicsItem::ItemIsSelectable, true); @@ -134,7 +135,8 @@ UBGraphicsPixmapItem* UBGraphicsPDFItem::toPixmapItem() const pixmapItem->setPixmap(pixmap); pixmapItem->setPos(this->pos()); - pixmapItem->setZValue(this->zValue()); +// pixmapItem->setZValue(this->zValue()); + UBGraphicsItem::assignZValue(pixmapItem, this->zValue()); pixmapItem->setTransform(this->transform()); pixmapItem->setFlag(QGraphicsItem::ItemIsMovable, true); pixmapItem->setFlag(QGraphicsItem::ItemIsSelectable, true); diff --git a/src/domain/UBGraphicsPixmapItem.cpp b/src/domain/UBGraphicsPixmapItem.cpp index edffb90d..ceb4fd28 100644 --- a/src/domain/UBGraphicsPixmapItem.cpp +++ b/src/domain/UBGraphicsPixmapItem.cpp @@ -98,7 +98,8 @@ UBItem* UBGraphicsPixmapItem::deepCopy() const copy->setPixmap(this->pixmap()); copy->setPos(this->pos()); - copy->setZValue(this->zValue()); +// copy->setZValue(this->zValue()); + UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->setFlag(QGraphicsItem::ItemIsMovable, true); copy->setFlag(QGraphicsItem::ItemIsSelectable, true); diff --git a/src/domain/UBGraphicsPolygonItem.cpp b/src/domain/UBGraphicsPolygonItem.cpp index c8153ca4..d2e96e25 100644 --- a/src/domain/UBGraphicsPolygonItem.cpp +++ b/src/domain/UBGraphicsPolygonItem.cpp @@ -153,7 +153,9 @@ UBGraphicsPolygonItem* UBGraphicsPolygonItem::deepCopy(const QPolygonF& pol) con copy->setPen(this->pen()); copy->mHasAlpha = this->mHasAlpha; - copy->setZValue(this->zValue()); +// copy->setZValue(this->zValue()); + UBGraphicsItem::assignZValue(copy, this->zValue()); + copy->setColorOnDarkBackground(this->colorOnDarkBackground()); copy->setColorOnLightBackground(this->colorOnLightBackground()); diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 476dd289..d4a7f8d8 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -75,6 +75,8 @@ qreal UBGraphicsScene::toolOffsetEraser = 200; qreal UBGraphicsScene::toolOffsetCurtain = 1000; qreal UBGraphicsScene::toolOffsetPointer = 1100; +qreal UBGraphicsScene::toolOffsetCache = 1000;//Didier please define offset you want + UBGraphicsScene::UBGraphicsScene(UBDocumentProxy* parent) : UBCoreGraphicsScene(parent) , mEraser(0) @@ -824,8 +826,8 @@ void UBGraphicsScene::initPolygonItem(UBGraphicsPolygonItem* polygonItem) polygonItem->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Graphic)); - polygonItem->setZValue(getNextDrawingZIndex()); - +// polygonItem->setZValue(getNextDrawingZIndex()); + UBGraphicsItem::assignZValue(polygonItem, getNextDrawingZIndex()); } @@ -1035,7 +1037,8 @@ UBGraphicsPixmapItem* UBGraphicsScene::addPixmap(const QPixmap& pPixmap, const Q pixmapItem->setFlag(QGraphicsItem::ItemIsMovable, true); pixmapItem->setFlag(QGraphicsItem::ItemIsSelectable, true); - pixmapItem->setZValue(getNextObjectZIndex()); +// pixmapItem->setZValue(getNextObjectZIndex()); + UBGraphicsItem::assignZValue(pixmapItem, getNextObjectZIndex()); pixmapItem->setPixmap(pPixmap); @@ -1083,7 +1086,8 @@ UBGraphicsVideoItem* UBGraphicsScene::addVideo(const QUrl& pVideoFileUrl, bool s videoItem->setFlag(QGraphicsItem::ItemIsMovable, true); videoItem->setFlag(QGraphicsItem::ItemIsSelectable, true); - videoItem->setZValue(getNextObjectZIndex()); +// videoItem->setZValue(getNextObjectZIndex()); + UBGraphicsItem::assignZValue(videoItem, getNextObjectZIndex()); addItem(videoItem); @@ -1113,7 +1117,8 @@ UBGraphicsAudioItem* UBGraphicsScene::addAudio(const QUrl& pAudioFileUrl, bool s audioItem->setFlag(QGraphicsItem::ItemIsMovable, true); audioItem->setFlag(QGraphicsItem::ItemIsSelectable, true); - audioItem->setZValue(getNextObjectZIndex()); +// audioItem->setZValue(getNextObjectZIndex()); + UBGraphicsItem::assignZValue(audioItem, getNextObjectZIndex()); addItem(audioItem); @@ -1178,7 +1183,8 @@ UBGraphicsW3CWidgetItem* UBGraphicsScene::addW3CWidget(const QUrl& pWidgetUrl, c void UBGraphicsScene::addGraphicsWidget(UBGraphicsWidgetItem* graphicsWidget, const QPointF& pPos) { graphicsWidget->setFlag(QGraphicsItem::ItemIsSelectable, true); - graphicsWidget->setZValue(getNextObjectZIndex()); +// graphicsWidget->setZValue(getNextObjectZIndex()); + UBGraphicsItem::assignZValue(graphicsWidget, getNextObjectZIndex()); addItem(graphicsWidget); @@ -1238,7 +1244,8 @@ UBGraphicsSvgItem* UBGraphicsScene::addSvg(const QUrl& pSvgFileUrl, const QPoint svgItem->setFlag(QGraphicsItem::ItemIsMovable, true); svgItem->setFlag(QGraphicsItem::ItemIsSelectable, true); - svgItem->setZValue(getNextObjectZIndex()); +// svgItem->setZValue(getNextObjectZIndex()); + UBGraphicsItem::assignZValue(svgItem, getNextObjectZIndex()); qreal sscale = 1 / UBApplication::boardController->systemScaleFactor(); svgItem->scale(sscale, sscale); @@ -1271,7 +1278,8 @@ UBGraphicsTextItem* UBGraphicsScene::addTextWithFont(const QString& pString, con { UBGraphicsTextItem *textItem = new UBGraphicsTextItem(); textItem->setPlainText(pString); - textItem->setZValue(getNextObjectZIndex()); +// textItem->setZValue(getNextObjectZIndex()); + UBGraphicsItem::assignZValue(textItem, getNextObjectZIndex()); QFont font = textItem->font(); @@ -1326,7 +1334,8 @@ UBGraphicsTextItem *UBGraphicsScene::addTextHtml(const QString &pString, const Q UBGraphicsTextItem *textItem = new UBGraphicsTextItem(); textItem->setPlainText(""); textItem->setHtml(pString); - textItem->setZValue(getNextObjectZIndex()); +// textItem->setZValue(getNextObjectZIndex()); + UBGraphicsItem::assignZValue(textItem, getNextObjectZIndex()); addItem(textItem); textItem->show(); @@ -1337,7 +1346,6 @@ UBGraphicsTextItem *UBGraphicsScene::addTextHtml(const QString &pString, const Q connect(textItem, SIGNAL(textUndoCommandAdded(UBGraphicsTextItem *)), this, SLOT(textUndoCommandAdded(UBGraphicsTextItem *))); -// textItem->setSelected(true); textItem->setFocus(); setDocumentUpdated(); @@ -1425,7 +1433,8 @@ QGraphicsItem* UBGraphicsScene::setAsBackgroundObject(QGraphicsItem* item, bool item->setAcceptedMouseButtons(Qt::NoButton); item->setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::FixedBackground); - item->setZValue(backgroundLayerStart); +// item->setZValue(backgroundLayerStart); + UBGraphicsItem::assignZValue(item, backgroundLayerStart); if (pAdaptTransformation) { @@ -1529,7 +1538,9 @@ void UBGraphicsScene::addRuler(QPointF center) QRectF rect = ruler->rect(); ruler->setRect(center.x() - rect.width()/2, center.y() - rect.height()/2, rect.width(), rect.height()); - ruler->setZValue(toolLayerStart + toolOffsetRuler); +// ruler->setZValue(toolLayerStart + toolOffsetRuler); + UBGraphicsItem::assignZValue(ruler, toolLayerStart + toolOffsetRuler); + ruler->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool)); addItem(ruler); @@ -1546,7 +1557,9 @@ void UBGraphicsScene::addProtractor(QPointF center) UBGraphicsProtractor* protractor = new UBGraphicsProtractor(); // mem : owned and destroyed by the scene mTools << protractor; - protractor->setZValue(toolLayerStart + toolOffsetProtractor); +// protractor->setZValue(toolLayerStart + toolOffsetProtractor); + UBGraphicsItem::assignZValue(protractor, toolLayerStart + toolOffsetProtractor); + protractor->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool)); addItem(protractor); @@ -1565,7 +1578,9 @@ void UBGraphicsScene::addTriangle(QPointF center) UBGraphicsTriangle* triangle = new UBGraphicsTriangle(); // mem : owned and destroyed by the scene mTools << triangle; - triangle->setZValue(toolLayerStart + toolOffsetProtractor); +// triangle->setZValue(toolLayerStart + toolOffsetProtractor); + UBGraphicsItem::assignZValue(triangle, toolLayerStart + toolOffsetTriangle); + triangle->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool)); addItem(triangle); @@ -1700,7 +1715,9 @@ void UBGraphicsScene::addCompass(QPointF center) QRectF rect = compass->rect(); compass->setRect(center.x() - rect.width() / 2, center.y() - rect.height() / 2, rect.width(), rect.height()); - compass->setZValue(toolLayerStart + toolOffsetCompass); +// compass->setZValue(toolLayerStart + toolOffsetCompass); + UBGraphicsItem::assignZValue(compass, toolLayerStart + toolOffsetCompass); + compass->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Tool)); compass->setVisible(true); @@ -1740,7 +1757,10 @@ void UBGraphicsScene::addMask() view = (QGraphicsView*)UBApplication::boardController->controlView(); QPolygonF polygon = view->mapToScene(view->rect()); - curtain->setZValue(toolLayerStart + toolOffsetCurtain); + +// curtain->setZValue(toolLayerStart + toolOffsetCurtain); + UBGraphicsItem::assignZValue(curtain, toolLayerStart + toolOffsetCurtain); + QRectF rect = polygon.boundingRect(); qreal xScale = view->matrix().m11(); qreal yScale = view->matrix().m22(); diff --git a/src/domain/UBGraphicsSvgItem.cpp b/src/domain/UBGraphicsSvgItem.cpp index cfd3509a..9d8798ec 100644 --- a/src/domain/UBGraphicsSvgItem.cpp +++ b/src/domain/UBGraphicsSvgItem.cpp @@ -132,7 +132,8 @@ UBItem* UBGraphicsSvgItem::deepCopy() const UBGraphicsSvgItem* copy = new UBGraphicsSvgItem(this->fileData()); copy->setPos(this->pos()); - copy->setZValue(this->zValue()); +// copy->setZValue(this->zValue()); + UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->setFlag(QGraphicsItem::ItemIsMovable, true); copy->setFlag(QGraphicsItem::ItemIsSelectable, true); @@ -186,7 +187,8 @@ UBGraphicsPixmapItem* UBGraphicsSvgItem::toPixmapItem() const pixmapItem->setPixmap(QPixmap::fromImage(image)); pixmapItem->setPos(this->pos()); - pixmapItem->setZValue(this->zValue()); +// pixmapItem->setZValue(this->zValue()); + UBGraphicsItem::assignZValue(pixmapItem, this->zValue()); pixmapItem->setTransform(this->transform()); pixmapItem->setFlag(QGraphicsItem::ItemIsMovable, true); pixmapItem->setFlag(QGraphicsItem::ItemIsSelectable, true); diff --git a/src/domain/UBGraphicsTextItem.cpp b/src/domain/UBGraphicsTextItem.cpp index 8770a435..0d01527a 100644 --- a/src/domain/UBGraphicsTextItem.cpp +++ b/src/domain/UBGraphicsTextItem.cpp @@ -205,7 +205,8 @@ UBItem* UBGraphicsTextItem::deepCopy() const copy->setHtml(toHtml()); copy->setPos(this->pos()); - copy->setZValue(this->zValue()); +// copy->setZValue(this->zValue()); + UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->setFlag(QGraphicsItem::ItemIsMovable, true); copy->setFlag(QGraphicsItem::ItemIsSelectable, true); diff --git a/src/domain/UBGraphicsVideoItem.cpp b/src/domain/UBGraphicsVideoItem.cpp index 841667cf..c1e57e4d 100644 --- a/src/domain/UBGraphicsVideoItem.cpp +++ b/src/domain/UBGraphicsVideoItem.cpp @@ -68,7 +68,8 @@ UBItem* UBGraphicsVideoItem::deepCopy() const UBGraphicsVideoItem *copy = new UBGraphicsVideoItem(videoUrl, parentItem()); copy->setPos(this->pos()); - copy->setZValue(this->zValue()); +// copy->setZValue(this->zValue()); + UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->setFlag(QGraphicsItem::ItemIsMovable, true); copy->setFlag(QGraphicsItem::ItemIsSelectable, true); diff --git a/src/domain/UBGraphicsVideoItemDelegate.cpp b/src/domain/UBGraphicsVideoItemDelegate.cpp index 429194b0..99ba687b 100644 --- a/src/domain/UBGraphicsVideoItemDelegate.cpp +++ b/src/domain/UBGraphicsVideoItemDelegate.cpp @@ -52,7 +52,8 @@ void UBGraphicsVideoItemDelegate::buildButtons() mMuteButton->hide(); mVideoControl = new DelegateVideoControl(delegated(), mFrame); - mVideoControl->setZValue(UBGraphicsScene::toolLayerStart + 2); +// mVideoControl->setZValue(UBGraphicsScene::toolLayerStart + 2); + UBGraphicsItem::assignZValue(mVideoControl, UBGraphicsScene::toolLayerStart + 2); mVideoControl->setFlag(QGraphicsItem::ItemIsSelectable, true); connect(mPlayPauseButton, SIGNAL(clicked(bool)), this, SLOT(togglePlayPause())); diff --git a/src/domain/UBGraphicsWidgetItem.cpp b/src/domain/UBGraphicsWidgetItem.cpp index b1246f2a..a786e55a 100644 --- a/src/domain/UBGraphicsWidgetItem.cpp +++ b/src/domain/UBGraphicsWidgetItem.cpp @@ -366,7 +366,8 @@ UBItem* UBGraphicsW3CWidgetItem::deepCopy() const UBGraphicsW3CWidgetItem *copy = new UBGraphicsW3CWidgetItem(mWebKitWidget->widgetUrl(), parentItem()); copy->setPos(this->pos()); - copy->setZValue(this->zValue()); +// copy->setZValue(this->zValue()); + UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->setFlag(QGraphicsItem::ItemIsMovable, true); copy->setFlag(QGraphicsItem::ItemIsSelectable, true); diff --git a/src/domain/UBItem.cpp b/src/domain/UBItem.cpp index 4a3e1643..3e6f68cf 100644 --- a/src/domain/UBItem.cpp +++ b/src/domain/UBItem.cpp @@ -28,3 +28,9 @@ UBItem::~UBItem() { // NOOP } + +void UBGraphicsItem::assignZValue(QGraphicsItem *item, int value) +{ + item->setZValue(value); + item->setData(UBGraphicsItemData::ItemOwnZValue, value); +} diff --git a/src/domain/UBItem.h b/src/domain/UBItem.h index 328a3c37..7ae29988 100644 --- a/src/domain/UBItem.h +++ b/src/domain/UBItem.h @@ -100,6 +100,7 @@ protected: public: + static void assignZValue(QGraphicsItem*, int value); virtual UBGraphicsItemDelegate *Delegate() const = 0; virtual void remove() = 0; diff --git a/src/gui/UBLibraryWidget.cpp b/src/gui/UBLibraryWidget.cpp index 22c27adc..963bd4e2 100644 --- a/src/gui/UBLibraryWidget.cpp +++ b/src/gui/UBLibraryWidget.cpp @@ -39,9 +39,9 @@ */ UBLibraryWidget::UBLibraryWidget(QWidget *parent, const char *name):UBThumbnailWidget(parent) , chainedElements(NULL) + , mLibraryController(NULL) , mpCrntDir(NULL) , mpCrntElem(NULL) - , mLibraryController(NULL) , mpTmpElem(NULL) { setObjectName(name); diff --git a/src/gui/UBThumbnailWidget.h b/src/gui/UBThumbnailWidget.h index c4fa103f..5f0543f8 100644 --- a/src/gui/UBThumbnailWidget.h +++ b/src/gui/UBThumbnailWidget.h @@ -23,6 +23,7 @@ #include "frameworks/UBCoreGraphicsScene.h" #include "core/UBSettings.h" +#include "domain/UBItem.h" #define STARTDRAGTIME 1000000 #define BUTTONSIZE 48 @@ -147,7 +148,8 @@ class UBThumbnail if (!mSelectionItem->scene()) { item->scene()->addItem(mSelectionItem); - mSelectionItem->setZValue(item->zValue() - 1); +// mSelectionItem->setZValue(item->zValue() - 1); + UBGraphicsItem::assignZValue(mSelectionItem, item->zValue() - 1); mAddedToScene = true; } diff --git a/src/pdf-merger/Object.h b/src/pdf-merger/Object.h index d2bc75ba..982d3734 100644 --- a/src/pdf-merger/Object.h +++ b/src/pdf-merger/Object.h @@ -48,7 +48,7 @@ namespace merge_lib std::string fileName = "", std::pair streamBounds = std::make_pair ((unsigned int)0,(unsigned int)0), bool hasStream = false ): _number(objectNumber), _generationNumber(generationNumber), _oldNumber(objectNumber), _content(objectContent),_parents(),_children(),_isPassed(false), - _fileName(fileName), _streamBounds(streamBounds), _hasStream(hasStream), _hasStreamInContent(false) + _streamBounds(streamBounds), _fileName(fileName), _hasStream(hasStream), _hasStreamInContent(false) { } virtual ~Object(); diff --git a/src/tools/UBGraphicsCache.cpp b/src/tools/UBGraphicsCache.cpp index 231399c3..a7e97895 100644 --- a/src/tools/UBGraphicsCache.cpp +++ b/src/tools/UBGraphicsCache.cpp @@ -33,7 +33,8 @@ UBGraphicsCache::UBGraphicsCache():QGraphicsRectItem() // Get the board size and pass it to the shape QRect boardRect = UBApplication::boardController->displayView()->rect(); setRect(-15*boardRect.width(), -15*boardRect.height(), 30*boardRect.width(), 30*boardRect.height()); - setZValue(CACHE_ZVALUE); +// setZValue(CACHE_ZVALUE); + UBGraphicsItem::assignZValue(this, CACHE_ZVALUE); setData(Qt::UserRole, QVariant("Cache")); } @@ -48,7 +49,8 @@ UBItem* UBGraphicsCache::deepCopy() const copy->setPos(this->pos()); copy->setRect(this->rect()); - copy->setZValue(this->zValue()); +// copy->setZValue(this->zValue()); + UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); // TODO UB 4.7 ... complete all members ? @@ -90,7 +92,8 @@ void UBGraphicsCache::paint(QPainter *painter, const QStyleOptionGraphicsItem *o //Q_UNUSED(option); Q_UNUSED(widget); - setZValue(CACHE_ZVALUE); +// setZValue(CACHE_ZVALUE); + UBGraphicsItem::assignZValue(this, CACHE_ZVALUE); painter->setBrush(mMaskColor); painter->setPen(mMaskColor); diff --git a/src/tools/UBGraphicsCompass.cpp b/src/tools/UBGraphicsCompass.cpp index d0374c11..6e13b125 100644 --- a/src/tools/UBGraphicsCompass.cpp +++ b/src/tools/UBGraphicsCompass.cpp @@ -85,7 +85,8 @@ UBItem* UBGraphicsCompass::deepCopy() const copy->setPos(this->pos()); copy->setRect(this->rect()); - copy->setZValue(this->zValue()); +// copy->setZValue(this->zValue()); + UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); // TODO UB 4.7 ... complete all members ? diff --git a/src/tools/UBGraphicsCurtainItem.cpp b/src/tools/UBGraphicsCurtainItem.cpp index 118b92f2..3dfb21b6 100644 --- a/src/tools/UBGraphicsCurtainItem.cpp +++ b/src/tools/UBGraphicsCurtainItem.cpp @@ -57,8 +57,8 @@ UBGraphicsCurtainItem::~UBGraphicsCurtainItem() QVariant UBGraphicsCurtainItem::itemChange(GraphicsItemChange change, const QVariant &value) { - if (change == QGraphicsItem::ItemSelectedHasChanged && QGraphicsRectItem::scene() && isSelected()) - setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetCurtain); +// if (change == QGraphicsItem::ItemSelectedHasChanged && QGraphicsRectItem::scene() && isSelected()) +// setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetCurtain); QVariant newValue = value; @@ -130,7 +130,8 @@ UBItem* UBGraphicsCurtainItem::deepCopy() const copy->setPos(this->pos()); copy->setBrush(this->brush()); copy->setPen(this->pen()); - copy->setZValue(this->zValue()); +// copy->setZValue(this->zValue()); + UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->setFlag(QGraphicsItem::ItemIsMovable, true); copy->setFlag(QGraphicsItem::ItemIsSelectable, true); diff --git a/src/tools/UBGraphicsCurtainItemDelegate.cpp b/src/tools/UBGraphicsCurtainItemDelegate.cpp index 31eb0da7..a16685b6 100644 --- a/src/tools/UBGraphicsCurtainItemDelegate.cpp +++ b/src/tools/UBGraphicsCurtainItemDelegate.cpp @@ -52,7 +52,7 @@ bool UBGraphicsCurtainItemDelegate::mousePressEvent(QGraphicsSceneMouseEvent *ev if (!mDelegated->isSelected()) { mDelegated->setSelected(true); - mDelegated->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetCurtain); +// mDelegated->setZValue(UBGraphicsScene::toolLayerStart + UBGraphicsScene::toolOffsetCurtain); positionHandles(); return true; @@ -69,13 +69,13 @@ QVariant UBGraphicsCurtainItemDelegate::itemChange(QGraphicsItem::GraphicsItemCh { if (change == QGraphicsItem::ItemZValueHasChanged) { - mFrame->setZValue(mDelegated->zValue() + 1); +// mFrame->setZValue(mDelegated->zValue() + 1); - foreach(DelegateButton* button, mButtons) - { - button->setZValue(mDelegated->zValue() + 2); - button->setZValue(mDelegated->zValue() + 2); - } +// foreach(DelegateButton* button, mButtons) +// { +// button->setZValue(mDelegated->zValue() + 2); +// button->setZValue(mDelegated->zValue() + 2); +// } } if (change == QGraphicsItem::ItemVisibleHasChanged) diff --git a/src/tools/UBGraphicsProtractor.cpp b/src/tools/UBGraphicsProtractor.cpp index 43a84af1..bafb5689 100644 --- a/src/tools/UBGraphicsProtractor.cpp +++ b/src/tools/UBGraphicsProtractor.cpp @@ -580,7 +580,8 @@ UBItem* UBGraphicsProtractor::deepCopy() const copy->setPos(this->pos()); copy->setRect(this->rect()); - copy->setZValue(this->zValue()); +// copy->setZValue(this->zValue()); + UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); copy->mCurrentAngle = this->mCurrentAngle; diff --git a/src/tools/UBGraphicsRuler.cpp b/src/tools/UBGraphicsRuler.cpp index cd15de78..2bf27719 100644 --- a/src/tools/UBGraphicsRuler.cpp +++ b/src/tools/UBGraphicsRuler.cpp @@ -74,7 +74,8 @@ UBItem* UBGraphicsRuler::deepCopy() const copy->setPos(this->pos()); copy->setRect(this->rect()); - copy->setZValue(this->zValue()); +// copy->setZValue(this->zValue()); + UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); // TODO UB 4.7 ... complete all members ? diff --git a/src/tools/UBGraphicsTriangle.cpp b/src/tools/UBGraphicsTriangle.cpp index f6459f97..e5c7fdeb 100644 --- a/src/tools/UBGraphicsTriangle.cpp +++ b/src/tools/UBGraphicsTriangle.cpp @@ -93,7 +93,8 @@ UBItem* UBGraphicsTriangle::deepCopy(void) const copy->setPos(this->pos()); copy->setPolygon(this->polygon()); - copy->setZValue(this->zValue()); +// copy->setZValue(this->zValue()); + UBGraphicsItem::assignZValue(copy, this->zValue()); copy->setTransform(this->transform()); // TODO UB 4.7 ... complete all members ? From 31ca9eca5517fb70264c6258d6b83662594294be Mon Sep 17 00:00:00 2001 From: Ivan Ilin Date: Tue, 13 Dec 2011 19:24:26 +0200 Subject: [PATCH 02/33] not stable changes --- src/domain/UBGraphicsItemDelegate.cpp | 4 +-- .../UBGraphicsItemTransformUndoCommand.cpp | 5 ++-- src/domain/UBGraphicsScene.cpp | 25 +++++++++++++++---- src/gui/UBThumbnailWidget.h | 4 +-- 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/domain/UBGraphicsItemDelegate.cpp b/src/domain/UBGraphicsItemDelegate.cpp index de335a3a..910d001c 100644 --- a/src/domain/UBGraphicsItemDelegate.cpp +++ b/src/domain/UBGraphicsItemDelegate.cpp @@ -93,8 +93,8 @@ void UBGraphicsItemDelegate::init() foreach(DelegateButton* button, mButtons) { button->hide(); -// button->setZValue(UBGraphicsScene::toolLayerStart + 2); - UBGraphicsItem::assignZValue(button, UBGraphicsScene::toolLayerStart + 2); + button->setZValue(UBGraphicsScene::toolLayerStart + 2); +// UBGraphicsItem::assignZValue(button, UBGraphicsScene::toolLayerStart + 2); button->setFlag(QGraphicsItem::ItemIsSelectable, true); } } diff --git a/src/domain/UBGraphicsItemTransformUndoCommand.cpp b/src/domain/UBGraphicsItemTransformUndoCommand.cpp index e56027ea..e883c8e9 100644 --- a/src/domain/UBGraphicsItemTransformUndoCommand.cpp +++ b/src/domain/UBGraphicsItemTransformUndoCommand.cpp @@ -50,7 +50,7 @@ void UBGraphicsItemTransformUndoCommand::undo() mItem->setPos(mPreviousPosition); mItem->setTransform(mPreviousTransform); // mItem->setZValue(mPreviousZValue); - UBGraphicsItem::assignZValue(mItem, mPreviousZValue); +// UBGraphicsItem::assignZValue(mItem, mPreviousZValue); UBResizableGraphicsItem* resizableItem = dynamic_cast(mItem); @@ -63,7 +63,8 @@ void UBGraphicsItemTransformUndoCommand::redo() mItem->setPos(mCurrentPosition); mItem->setTransform(mCurrentTransform); // mItem->setZValue(mCurrentZValue); - UBGraphicsItem::assignZValue(mItem, mCurrentZValue); + + UBGraphicsItem::assignZValue(mItem, /*mCurrentZValue*/mItem->data(UBGraphicsItemData::ItemOwnZValue).toReal()); UBResizableGraphicsItem* resizableItem = dynamic_cast(mItem); diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index d4a7f8d8..b5a59ed8 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -60,6 +60,7 @@ #include "UBGraphicsStroke.h" #include "core/memcheck.h" +#include "qtlogger.h" qreal UBGraphicsScene::backgroundLayerStart = -20000000.0; qreal UBGraphicsScene::objectLayerStart = -10000000.0; @@ -139,6 +140,8 @@ UBGraphicsScene::UBGraphicsScene(UBDocumentProxy* parent) } connect(this, SIGNAL(selectionChanged()), this, SLOT(selectionChangedProcessing())); + QtLogger::logger().start("/home/ilia/Documents/tmp/2/log.txt"); + QtLogger::logger().finish(); } UBGraphicsScene::~UBGraphicsScene() @@ -152,12 +155,15 @@ UBGraphicsScene::~UBGraphicsScene() void UBGraphicsScene::selectionChangedProcessing() { + QtLogger::logger().start("/home/ilia/Documents/tmp/2/log.txt"); + QtLogger::logger() << "selection processing started\n" << endl; -// if (selectedItems().count()) -// UBApplication::showMessage("ZValue is " + QString::number(selectedItems().first()->zValue(), 'f')); + if (selectedItems().count()) + UBApplication::showMessage("ZValue is " + QString::number(selectedItems().first()->zValue(), 'f')); QList allItemsList = items(); + QtLogger::logger() << "=====all items searching...======" << endl; for( int i = 0; i < allItemsList.size(); i++ ) { QGraphicsItem *nextItem = allItemsList.at(i); @@ -167,18 +173,27 @@ void UBGraphicsScene::selectionChangedProcessing() continue; //Temporary stub end (sankore 360) // qreal zValue = nextItem->zValue(); - nextItem->setZValue(qreal(1)); +// nextItem->setZValue(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal()); + nextItem->setZValue(1); + QtLogger::logger() << "own Z " << QString::number(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal(), 'f') + << " next Z " << QString::number(nextItem->zValue(), 'f')<< endl; // qDebug() << QString(" %1 ").arg(i) << QString(" %1 ").arg(zValue); } - QList selItemsList = selectedItems(); + QtLogger::logger() << "=====selected items searching...======" << endl; + QGraphicsItem *nextItem; for( int i = 0; i < selItemsList.size(); i++ ) { - QGraphicsItem *nextItem = selItemsList.at(i); + nextItem = selItemsList.at(i); + QtLogger::logger() << "own Z " << QString::number(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal(), 'f') + << " next Z " << QString::number(nextItem->zValue(), 'f')<< endl; // qreal zValue = nextItem->zValue(); nextItem->setZValue(2); // qDebug() << QString(" >>> %1 <<< ").arg(i) << QString(" >>> %1 <<< ").arg(zValue); } + QtLogger::logger() << "\nselection processing finished" << endl; + QtLogger::logger().finish(); + } // MARK: - diff --git a/src/gui/UBThumbnailWidget.h b/src/gui/UBThumbnailWidget.h index 5f0543f8..f3f25d6a 100644 --- a/src/gui/UBThumbnailWidget.h +++ b/src/gui/UBThumbnailWidget.h @@ -148,8 +148,8 @@ class UBThumbnail if (!mSelectionItem->scene()) { item->scene()->addItem(mSelectionItem); -// mSelectionItem->setZValue(item->zValue() - 1); - UBGraphicsItem::assignZValue(mSelectionItem, item->zValue() - 1); + mSelectionItem->setZValue(item->zValue() - 1); +// UBGraphicsItem::assignZValue(mSelectionItem, item->zValue() - 1); mAddedToScene = true; } From d15e23d629fb262409909a8d4cfe798a81d3a945 Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Wed, 14 Dec 2011 12:58:21 +0300 Subject: [PATCH 03/33] SANKORE-301 fix incorrect memory pointers usage (pointers collect in mFastAccessList and objects is never clear) --- src/domain/UBGraphicsItemDelegate.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/domain/UBGraphicsItemDelegate.cpp b/src/domain/UBGraphicsItemDelegate.cpp index 7cc8fa96..9b15379e 100644 --- a/src/domain/UBGraphicsItemDelegate.cpp +++ b/src/domain/UBGraphicsItemDelegate.cpp @@ -282,8 +282,8 @@ void UBGraphicsItemDelegate::positionHandles() void UBGraphicsItemDelegate::remove(bool canUndo) { - QGraphicsScene* scene = mDelegated->scene(); - +// QGraphicsScene* scene = mDelegated->scene(); + UBGraphicsScene* scene = (UBGraphicsScene*)(mDelegated->scene()); if (scene) { foreach(DelegateButton* button, mButtons) From c4cefa677eb6b4b0091ae269a9713d12c6cc52b0 Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Wed, 14 Dec 2011 16:02:25 +0300 Subject: [PATCH 04/33] SANKORE-300 / SANKORE-332 : fix clear item when we add new page, and this item not in scene --- src/board/UBBoardController.cpp | 45 +++++++++++++++++++++++++- src/board/UBBoardController.h | 3 ++ src/domain/UBGraphicsItemUndoCommand.h | 3 ++ 3 files changed, 50 insertions(+), 1 deletion(-) diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 829c07ef..60ef79ee 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -1132,7 +1132,7 @@ void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, if(sceneChange) emit activeSceneWillChange(); - UBApplication::undoStack->clear(); + ClearUndoStack(); mActiveScene = targetScene; mActiveDocument = pDocumentProxy; @@ -1173,6 +1173,49 @@ void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, } } +void UBBoardController::ClearUndoStack() +{ + QSet uniqueItems; + QUndoStack *stack = UBApplication::undoStack; + // go through all stack command + for(int i = 0; i < stack->count(); i++) + { + UBGraphicsItemUndoCommand *cmd = (UBGraphicsItemUndoCommand*)stack->command(i); + + // go through all added and removed objects, for create list of unique objects + QSetIterator itAdded(cmd->GetAddedList()); + while (itAdded.hasNext()) + { + QGraphicsItem* item = itAdded.next(); + if( !uniqueItems.contains(item) ) + uniqueItems.insert(item); + } + + QSetIterator itRemoved(cmd->GetRemovedList()); + while (itRemoved.hasNext()) + { + QGraphicsItem* item = itRemoved.next(); + if( !uniqueItems.contains(item) ) + uniqueItems.insert(item); + } + } + + // clear stack, and command list + stack->clear(); + + // go through all unique items, and check, ot on scene, or not. + // if not on scene, than item can be deleted + + QSetIterator itUniq(uniqueItems); + while (itUniq.hasNext()) + { + QGraphicsItem* item = itUniq.next(); + UBGraphicsScene *scene = (UBGraphicsScene*)item->scene(); + if(!scene) + delete item; + } + +} void UBBoardController::adjustDisplayViews() { diff --git a/src/board/UBBoardController.h b/src/board/UBBoardController.h index 218130ab..2b17670b 100644 --- a/src/board/UBBoardController.h +++ b/src/board/UBBoardController.h @@ -150,6 +150,9 @@ class UBBoardController : public QObject void notifyPageChanged(); void displayMetaData(QMap metadatas); + void ClearUndoStack(); + + public slots: void setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, int pSceneIndex = 0); void showDocumentsDialog(); diff --git a/src/domain/UBGraphicsItemUndoCommand.h b/src/domain/UBGraphicsItemUndoCommand.h index 4d513915..84711bd4 100644 --- a/src/domain/UBGraphicsItemUndoCommand.h +++ b/src/domain/UBGraphicsItemUndoCommand.h @@ -32,6 +32,9 @@ class UBGraphicsItemUndoCommand : public QUndoCommand virtual ~UBGraphicsItemUndoCommand(); + QSet GetAddedList() { return mAddedItems; }; + QSet GetRemovedList() { return mRemovedItems; }; + protected: virtual void undo(); virtual void redo(); From 6473d4fa0f39166820e8cea63f7a03f578d127da Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Wed, 14 Dec 2011 16:40:41 +0300 Subject: [PATCH 05/33] SANKORE-332 / SANKORE-300 : fix crash --- src/board/UBBoardController.cpp | 4 +++- src/frameworks/UBCoreGraphicsScene.cpp | 13 +++++++++++++ src/frameworks/UBCoreGraphicsScene.h | 3 +++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 60ef79ee..17d47678 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -1212,7 +1212,9 @@ void UBBoardController::ClearUndoStack() QGraphicsItem* item = itUniq.next(); UBGraphicsScene *scene = (UBGraphicsScene*)item->scene(); if(!scene) - delete item; + { + bool retCode = mActiveScene->deleteItem(item); + } } } diff --git a/src/frameworks/UBCoreGraphicsScene.cpp b/src/frameworks/UBCoreGraphicsScene.cpp index 4412f9b1..bcac6202 100644 --- a/src/frameworks/UBCoreGraphicsScene.cpp +++ b/src/frameworks/UBCoreGraphicsScene.cpp @@ -53,3 +53,16 @@ void UBCoreGraphicsScene::removeItem(QGraphicsItem* item, bool forceDelete) delete item; } } + +bool UBCoreGraphicsScene::deleteItem(QGraphicsItem* item) +{ + if(mItemsToDelete.contains(item)) + { + mItemsToDelete.remove(item); + delete item; + return true; + } + else + return false; +} + diff --git a/src/frameworks/UBCoreGraphicsScene.h b/src/frameworks/UBCoreGraphicsScene.h index fdeaae49..656f2a00 100644 --- a/src/frameworks/UBCoreGraphicsScene.h +++ b/src/frameworks/UBCoreGraphicsScene.h @@ -28,6 +28,9 @@ class UBCoreGraphicsScene : public QGraphicsScene virtual void removeItem(QGraphicsItem* item, bool forceDelete = false); + virtual bool deleteItem(QGraphicsItem* item); + + private: QSet mItemsToDelete; }; From 644c513352293ed144ddda4845b0adf97c2798e4 Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Wed, 14 Dec 2011 17:10:04 +0300 Subject: [PATCH 06/33] SANKORE-409 --- src/gui/UBTeacherBarWidget.cpp | 12 ++++++++++++ src/gui/UBTeacherBarWidget.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/gui/UBTeacherBarWidget.cpp b/src/gui/UBTeacherBarWidget.cpp index ea8348b1..c3986972 100644 --- a/src/gui/UBTeacherBarWidget.cpp +++ b/src/gui/UBTeacherBarWidget.cpp @@ -62,6 +62,7 @@ UBTeacherBarWidget::UBTeacherBarWidget(QWidget *parent, const char *name):UBDock mpTitleLabel->setAlignment(Qt::AlignRight); mpTitle = new QLineEdit(mpContainer); mpTitle->setObjectName("DockPaletteWidgetLineEdit"); + connect(mpTitle, SIGNAL(textChanged(const QString&)), this, SLOT(onTitleTextChanged(const QString&))); mpTitleLayout = new QHBoxLayout(); mpTitleLayout->addWidget(mpTitleLabel, 0); mpTitleLayout->addWidget(mpTitle, 1); @@ -95,6 +96,7 @@ UBTeacherBarWidget::UBTeacherBarWidget(QWidget *parent, const char *name):UBDock mpEquipmentLabel->setAlignment(Qt::AlignRight); mpEquipment = new QLineEdit(mpContainer); mpEquipment->setObjectName("DockPaletteWidgetLineEdit"); + connect(mpEquipment, SIGNAL(textChanged(const QString&)), this, SLOT(onEquipmentTextChanged(const QString&))); mpEquipmentLayout = new QHBoxLayout(); mpEquipmentLayout->addWidget(mpEquipmentLabel, 0); mpEquipmentLayout->addWidget(mpEquipment, 1); @@ -319,6 +321,16 @@ void UBTeacherBarWidget::loadContent() mpAction3->setStudentText(nextInfos.action3Student); } +void UBTeacherBarWidget::onTitleTextChanged(const QString& text) +{ + mpTitle->setToolTip(text); +} + +void UBTeacherBarWidget::onEquipmentTextChanged(const QString& text) +{ + mpEquipment->setToolTip(text); +} + UBTeacherStudentAction::UBTeacherStudentAction(int actionNumber, QWidget *parent, const char *name):QWidget(parent) , mpActionLabel(NULL) , mpTeacherLabel(NULL) diff --git a/src/gui/UBTeacherBarWidget.h b/src/gui/UBTeacherBarWidget.h index 555b6ef6..3f18bcbe 100644 --- a/src/gui/UBTeacherBarWidget.h +++ b/src/gui/UBTeacherBarWidget.h @@ -48,6 +48,8 @@ private slots: void saveContent(); void loadContent(); void onValueChanged(); + void onTitleTextChanged(const QString& text); + void onEquipmentTextChanged(const QString& text); private: void populateCombos(); From e2539163497e8396112b7fb1d020ddd226d13ca6 Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Wed, 14 Dec 2011 17:22:32 +0300 Subject: [PATCH 07/33] Compilation error fix --- src/domain/UBGraphicsScene.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 635337a8..bd3b2b71 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -60,7 +60,7 @@ #include "UBGraphicsStroke.h" #include "core/memcheck.h" -#include "qtlogger.h" +//#include "qtlogger.h" qreal UBGraphicsScene::backgroundLayerStart = -20000000.0; qreal UBGraphicsScene::objectLayerStart = -10000000.0; @@ -140,8 +140,8 @@ UBGraphicsScene::UBGraphicsScene(UBDocumentProxy* parent) } connect(this, SIGNAL(selectionChanged()), this, SLOT(selectionChangedProcessing())); - QtLogger::logger().start("/home/ilia/Documents/tmp/2/log.txt"); - QtLogger::logger().finish(); + //QtLogger::logger().start("/home/ilia/Documents/tmp/2/log.txt"); + //QtLogger::logger().finish(); } UBGraphicsScene::~UBGraphicsScene() @@ -155,15 +155,15 @@ UBGraphicsScene::~UBGraphicsScene() void UBGraphicsScene::selectionChangedProcessing() { - QtLogger::logger().start("/home/ilia/Documents/tmp/2/log.txt"); - QtLogger::logger() << "selection processing started\n" << endl; + //QtLogger::logger().start("/home/ilia/Documents/tmp/2/log.txt"); + //QtLogger::logger() << "selection processing started\n" << endl; if (selectedItems().count()) UBApplication::showMessage("ZValue is " + QString::number(selectedItems().first()->zValue(), 'f')); QList allItemsList = items(); - QtLogger::logger() << "=====all items searching...======" << endl; + //QtLogger::logger() << "=====all items searching...======" << endl; qreal maxZ = 0.; for( int i = 0; i < allItemsList.size(); i++ ) { @@ -179,24 +179,24 @@ void UBGraphicsScene::selectionChangedProcessing() nextItem->setZValue(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal()); // nextItem->setZValue(qreal(1)); - QtLogger::logger() << "own Z " << QString::number(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal(), 'f') - << " next Z " << QString::number(nextItem->zValue(), 'f')<< endl; + //QtLogger::logger() << "own Z " << QString::number(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal(), 'f') + // << " next Z " << QString::number(nextItem->zValue(), 'f')<< endl; // qDebug() << QString(" %1 ").arg(i) << QString(" %1 ").arg(zValue); } QList selItemsList = selectedItems(); - QtLogger::logger() << "=====selected items searching...======" << endl; + //QtLogger::logger() << "=====selected items searching...======" << endl; // QGraphicsItem *nextItem; for( int i = 0; i < selItemsList.size(); i++ ) { QGraphicsItem *nextItem = selItemsList.at(i); - QtLogger::logger() << "own Z " << QString::number(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal(), 'f') - << " next Z " << QString::number(nextItem->zValue(), 'f')<< endl; + //QtLogger::logger() << "own Z " << QString::number(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal(), 'f') + // << " next Z " << QString::number(nextItem->zValue(), 'f')<< endl; // qreal zValue = nextItem->zValue(); nextItem->setZValue(maxZ + 0.0001); // qDebug() << QString(" >>> %1 <<< ").arg(i) << QString(" >>> %1 <<< ").arg(zValue); } - QtLogger::logger() << "\nselection processing finished" << endl; - QtLogger::logger().finish(); + //QtLogger::logger() << "\nselection processing finished" << endl; + //QtLogger::logger().finish(); } // MARK: - From e943854cff224fed06aa268085098ba8215dac8d Mon Sep 17 00:00:00 2001 From: Ivan Ilin Date: Wed, 14 Dec 2011 16:26:07 +0200 Subject: [PATCH 08/33] Z-value is now working correct --- src/adaptors/UBSvgSubsetAdaptor.cpp | 3 +- src/domain/UBGraphicsDelegateFrame.cpp | 3 ++ src/domain/UBGraphicsItemDelegate.cpp | 6 ++-- .../UBGraphicsItemTransformUndoCommand.cpp | 6 ++-- src/domain/UBGraphicsScene.cpp | 34 +++++++++++-------- 5 files changed, 29 insertions(+), 23 deletions(-) diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp index 660a2f5a..6533e06a 100644 --- a/src/adaptors/UBSvgSubsetAdaptor.cpp +++ b/src/adaptors/UBSvgSubsetAdaptor.cpp @@ -107,7 +107,8 @@ QMatrix UBSvgSubsetAdaptor::fromSvgTransform(const QString& transform) static bool itemZIndexComp(const QGraphicsItem* item1, const QGraphicsItem* item2) { - return item1->zValue() < item2->zValue(); +// return item1->zValue() < item2->zValue(); + return item1->data(UBGraphicsItemData::ItemOwnZValue).toReal() < item2->data(UBGraphicsItemData::ItemOwnZValue).toReal(); } diff --git a/src/domain/UBGraphicsDelegateFrame.cpp b/src/domain/UBGraphicsDelegateFrame.cpp index a6f17114..393353d1 100644 --- a/src/domain/UBGraphicsDelegateFrame.cpp +++ b/src/domain/UBGraphicsDelegateFrame.cpp @@ -531,6 +531,9 @@ void UBGraphicsDelegateFrame::positionHandles() { setBrush(QBrush(UBSettings::paletteColor)); } + + //make frame interact like delegated item when selected. Maybe should be deleted if selection logic will change + setZValue(delegated()->zValue()); } diff --git a/src/domain/UBGraphicsItemDelegate.cpp b/src/domain/UBGraphicsItemDelegate.cpp index 910d001c..ba20e493 100644 --- a/src/domain/UBGraphicsItemDelegate.cpp +++ b/src/domain/UBGraphicsItemDelegate.cpp @@ -93,8 +93,8 @@ void UBGraphicsItemDelegate::init() foreach(DelegateButton* button, mButtons) { button->hide(); - button->setZValue(UBGraphicsScene::toolLayerStart + 2); -// UBGraphicsItem::assignZValue(button, UBGraphicsScene::toolLayerStart + 2); +// button->setZValue(UBGraphicsScene::toolLayerStart + 2); + UBGraphicsItem::assignZValue(button, UBGraphicsScene::toolLayerStart + 2); button->setFlag(QGraphicsItem::ItemIsSelectable, true); } } @@ -323,12 +323,10 @@ void UBGraphicsItemDelegate::lock(bool locked) if (locked) { mDelegated->setData(UBGraphicsItemData::ItemLocked, QVariant(true)); - qDebug() << "item's data is called for locked" << mDelegated->data(UBGraphicsItemData::ItemLocked); } else { mDelegated->setData(UBGraphicsItemData::ItemLocked, QVariant(false)); - qDebug() << "item's data is called for unlocked" << mDelegated->data(UBGraphicsItemData::ItemLocked); } mDelegated->update(); diff --git a/src/domain/UBGraphicsItemTransformUndoCommand.cpp b/src/domain/UBGraphicsItemTransformUndoCommand.cpp index e883c8e9..f21355bd 100644 --- a/src/domain/UBGraphicsItemTransformUndoCommand.cpp +++ b/src/domain/UBGraphicsItemTransformUndoCommand.cpp @@ -49,7 +49,7 @@ void UBGraphicsItemTransformUndoCommand::undo() { mItem->setPos(mPreviousPosition); mItem->setTransform(mPreviousTransform); -// mItem->setZValue(mPreviousZValue); + mItem->setZValue(mPreviousZValue); // UBGraphicsItem::assignZValue(mItem, mPreviousZValue); UBResizableGraphicsItem* resizableItem = dynamic_cast(mItem); @@ -62,9 +62,9 @@ void UBGraphicsItemTransformUndoCommand::redo() { mItem->setPos(mCurrentPosition); mItem->setTransform(mCurrentTransform); -// mItem->setZValue(mCurrentZValue); + mItem->setZValue(mCurrentZValue); - UBGraphicsItem::assignZValue(mItem, /*mCurrentZValue*/mItem->data(UBGraphicsItemData::ItemOwnZValue).toReal()); +// UBGraphicsItem::assignZValue(mItem, /*mCurrentZValue*/mItem->data(UBGraphicsItemData::ItemOwnZValue).toReal()); UBResizableGraphicsItem* resizableItem = dynamic_cast(mItem); diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index b5a59ed8..635337a8 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -164,6 +164,7 @@ void UBGraphicsScene::selectionChangedProcessing() QList allItemsList = items(); QtLogger::logger() << "=====all items searching...======" << endl; + qreal maxZ = 0.; for( int i = 0; i < allItemsList.size(); i++ ) { QGraphicsItem *nextItem = allItemsList.at(i); @@ -173,27 +174,29 @@ void UBGraphicsScene::selectionChangedProcessing() continue; //Temporary stub end (sankore 360) // qreal zValue = nextItem->zValue(); -// nextItem->setZValue(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal()); - nextItem->setZValue(1); + if (nextItem->zValue() > maxZ) + maxZ = nextItem->zValue(); + + nextItem->setZValue(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal()); +// nextItem->setZValue(qreal(1)); QtLogger::logger() << "own Z " << QString::number(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal(), 'f') << " next Z " << QString::number(nextItem->zValue(), 'f')<< endl; // qDebug() << QString(" %1 ").arg(i) << QString(" %1 ").arg(zValue); } QList selItemsList = selectedItems(); QtLogger::logger() << "=====selected items searching...======" << endl; - QGraphicsItem *nextItem; +// QGraphicsItem *nextItem; for( int i = 0; i < selItemsList.size(); i++ ) { - nextItem = selItemsList.at(i); + QGraphicsItem *nextItem = selItemsList.at(i); QtLogger::logger() << "own Z " << QString::number(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal(), 'f') << " next Z " << QString::number(nextItem->zValue(), 'f')<< endl; // qreal zValue = nextItem->zValue(); - nextItem->setZValue(2); + nextItem->setZValue(maxZ + 0.0001); // qDebug() << QString(" >>> %1 <<< ").arg(i) << QString(" >>> %1 <<< ").arg(zValue); } QtLogger::logger() << "\nselection processing finished" << endl; QtLogger::logger().finish(); - } // MARK: - @@ -424,23 +427,23 @@ void UBGraphicsScene::drawEraser(const QPointF &pPoint, bool isFirstDraw) if(isFirstDraw) { + qreal maxZ = 0.; QList allItemsList = items(); for( int i = 0; i < allItemsList.size(); i++ ) { QGraphicsItem *nextItem = allItemsList.at(i); qreal zValue = nextItem->zValue(); - nextItem->setZValue(qreal(1)); - qDebug() << QString(" %1 ").arg(i) << QString(" %1 ").arg(zValue); + if (zValue > maxZ) + maxZ = zValue; + nextItem->setZValue(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal()); } - mEraser->setZValue(2); + mEraser->setZValue(maxZ + 0.0001); mEraser->show(); } - } } - void UBGraphicsScene::drawPointer(const QPointF &pPoint, bool isFirstDraw) { qreal pointerDiameter = UBSettings::pointerDiameter / UBApplication::boardController->currentZoom(); @@ -456,19 +459,20 @@ void UBGraphicsScene::drawPointer(const QPointF &pPoint, bool isFirstDraw) if(isFirstDraw) { + qreal maxZ = 0.; QList allItemsList = items(); for( int i = 0; i < allItemsList.size(); i++ ) { QGraphicsItem *nextItem = allItemsList.at(i); qreal zValue = nextItem->zValue(); - nextItem->setZValue(qreal(1)); - qDebug() << QString(" %1 ").arg(i) << QString(" %1 ").arg(zValue); + if (zValue > maxZ) + maxZ = zValue; + nextItem->setZValue(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal()); } - mPointer->setZValue(2); + mPointer->setZValue(maxZ + 0.0001); mPointer->show(); } - } } From a34fcbd5904140a7f74428b2ae248c6943351f69 Mon Sep 17 00:00:00 2001 From: Ivan Ilin Date: Thu, 15 Dec 2011 09:50:13 +0200 Subject: [PATCH 09/33] no any qtlogger any more --- src/domain/UBGraphicsScene.cpp | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 635337a8..dd0790ad 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -60,7 +60,6 @@ #include "UBGraphicsStroke.h" #include "core/memcheck.h" -#include "qtlogger.h" qreal UBGraphicsScene::backgroundLayerStart = -20000000.0; qreal UBGraphicsScene::objectLayerStart = -10000000.0; @@ -140,8 +139,6 @@ UBGraphicsScene::UBGraphicsScene(UBDocumentProxy* parent) } connect(this, SIGNAL(selectionChanged()), this, SLOT(selectionChangedProcessing())); - QtLogger::logger().start("/home/ilia/Documents/tmp/2/log.txt"); - QtLogger::logger().finish(); } UBGraphicsScene::~UBGraphicsScene() @@ -155,15 +152,11 @@ UBGraphicsScene::~UBGraphicsScene() void UBGraphicsScene::selectionChangedProcessing() { - QtLogger::logger().start("/home/ilia/Documents/tmp/2/log.txt"); - QtLogger::logger() << "selection processing started\n" << endl; - - if (selectedItems().count()) + if (selectedItems().count()) UBApplication::showMessage("ZValue is " + QString::number(selectedItems().first()->zValue(), 'f')); QList allItemsList = items(); - QtLogger::logger() << "=====all items searching...======" << endl; qreal maxZ = 0.; for( int i = 0; i < allItemsList.size(); i++ ) { @@ -179,24 +172,15 @@ void UBGraphicsScene::selectionChangedProcessing() nextItem->setZValue(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal()); // nextItem->setZValue(qreal(1)); - QtLogger::logger() << "own Z " << QString::number(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal(), 'f') - << " next Z " << QString::number(nextItem->zValue(), 'f')<< endl; -// qDebug() << QString(" %1 ").arg(i) << QString(" %1 ").arg(zValue); } QList selItemsList = selectedItems(); - QtLogger::logger() << "=====selected items searching...======" << endl; // QGraphicsItem *nextItem; for( int i = 0; i < selItemsList.size(); i++ ) { QGraphicsItem *nextItem = selItemsList.at(i); - QtLogger::logger() << "own Z " << QString::number(nextItem->data(UBGraphicsItemData::ItemOwnZValue).toReal(), 'f') - << " next Z " << QString::number(nextItem->zValue(), 'f')<< endl; -// qreal zValue = nextItem->zValue(); nextItem->setZValue(maxZ + 0.0001); // qDebug() << QString(" >>> %1 <<< ").arg(i) << QString(" >>> %1 <<< ").arg(zValue); } - QtLogger::logger() << "\nselection processing finished" << endl; - QtLogger::logger().finish(); } // MARK: - From 26e1f11a613ca5f0a7509ce4cd7cdabfdf23f7d5 Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Thu, 15 Dec 2011 14:14:16 +0300 Subject: [PATCH 10/33] SANKORE-300 / SANKORE-332 fix crash while processing undo commands with types not equal GraphicsItem --- src/board/UBBoardController.cpp | 15 ++++-- src/domain/UBAbstractUndoCommand.cpp | 40 ++++++++++++++++ src/domain/UBAbstractUndoCommand.h | 46 +++++++++++++++++++ src/domain/UBDocumentUndoCommand.h | 6 ++- .../UBGraphicsItemTransformUndoCommand.h | 5 +- src/domain/UBGraphicsItemUndoCommand.h | 6 ++- src/domain/UBGraphicsTextItemUndoCommand.h | 5 +- src/domain/UBPageSizeUndoCommand.h | 5 +- 8 files changed, 118 insertions(+), 10 deletions(-) create mode 100644 src/domain/UBAbstractUndoCommand.cpp create mode 100644 src/domain/UBAbstractUndoCommand.h diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index ee9bfe9e..d18b53ac 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -66,6 +66,7 @@ #include "UBBoardPaletteManager.h" #include "core/memcheck.h" +//#include UBBoardController::UBBoardController(UBMainWindow* mainWindow) : QObject(mainWindow->centralWidget()) @@ -1176,11 +1177,16 @@ void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, void UBBoardController::ClearUndoStack() { QSet uniqueItems; - QUndoStack *stack = UBApplication::undoStack; // go through all stack command - for(int i = 0; i < stack->count(); i++) + int count = UBApplication::undoStack->count(); + for(int i = 0; i < UBApplication::undoStack->count(); i++) { - UBGraphicsItemUndoCommand *cmd = (UBGraphicsItemUndoCommand*)stack->command(i); + + UBAbstractUndoCommand *abstractCmd = (UBAbstractUndoCommand*)UBApplication::undoStack->command(i); + if(abstractCmd->getType() != UBAbstractUndoCommand::undotype_GRAPHICITEM) + continue; + + UBGraphicsItemUndoCommand *cmd = (UBGraphicsItemUndoCommand*)UBApplication::undoStack->command(i); // go through all added and removed objects, for create list of unique objects QSetIterator itAdded(cmd->GetAddedList()); @@ -1201,7 +1207,8 @@ void UBBoardController::ClearUndoStack() } // clear stack, and command list - stack->clear(); + UBApplication::undoStack->clear(); + count = UBApplication::undoStack->count(); // go through all unique items, and check, ot on scene, or not. // if not on scene, than item can be deleted diff --git a/src/domain/UBAbstractUndoCommand.cpp b/src/domain/UBAbstractUndoCommand.cpp new file mode 100644 index 00000000..fe623acc --- /dev/null +++ b/src/domain/UBAbstractUndoCommand.cpp @@ -0,0 +1,40 @@ +/* + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "UBAbstractUndoCommand.h" + +UBAbstractUndoCommand::UBAbstractUndoCommand() +{ + // NOOP +} + +UBAbstractUndoCommand::~UBAbstractUndoCommand() +{ + // NOOP +} + + +void UBAbstractUndoCommand::undo() +{ + // NOOP +} + +void UBAbstractUndoCommand::redo() +{ + // NOOP +} + +//void UBAbstractUndoCommand::UndoType getType(UndoType type); + diff --git a/src/domain/UBAbstractUndoCommand.h b/src/domain/UBAbstractUndoCommand.h new file mode 100644 index 00000000..85dfcc11 --- /dev/null +++ b/src/domain/UBAbstractUndoCommand.h @@ -0,0 +1,46 @@ +/* + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef UBABSTRACTUNDOCOMMAND_H_ +#define UBABSTRACTUNDOCOMMAND_H_ + +#include + +class UBAbstractUndoCommand : public QUndoCommand +{ + public: + + UBAbstractUndoCommand(); + ~UBAbstractUndoCommand(); + + enum UndoType : int + { + undotype_UNKNOWN = 0, + undotype_DOCUMENT = 1, + undotype_GRAPHICITEMTRANSFORM = 2, + undotype_GRAPHICITEM = 3, + undotype_GRAPHICTEXTITEM = 4, + undotype_PAGESIZE = 5, + }; + + virtual UndoType getType() { return undotype_UNKNOWN; }; + + protected: + virtual void undo(); + virtual void redo(); + +}; + +#endif /* UBABSTRACTUNDOCOMMAND_H_ */ diff --git a/src/domain/UBDocumentUndoCommand.h b/src/domain/UBDocumentUndoCommand.h index a5f61d9a..b6b1785a 100644 --- a/src/domain/UBDocumentUndoCommand.h +++ b/src/domain/UBDocumentUndoCommand.h @@ -17,18 +17,20 @@ #define UBDOCUMENTUNDOCOMMAND_H_ #include +#include "UBAbstractUndoCommand.h" class UBDocumentProxy; class UBGraphicsScene; - -class UBDocumentUndoCommand: public QUndoCommand +class UBDocumentUndoCommand: public UBAbstractUndoCommand { public: UBDocumentUndoCommand(UBDocumentProxy* pDocument, const QList& pOldScenes, const QList& pNewScenes, const int& pActiveSceneIndex); virtual ~UBDocumentUndoCommand(); + virtual UndoType getType() { return undotype_DOCUMENT; }; + protected: virtual void undo(); diff --git a/src/domain/UBGraphicsItemTransformUndoCommand.h b/src/domain/UBGraphicsItemTransformUndoCommand.h index 67b57dd1..2f4538d7 100644 --- a/src/domain/UBGraphicsItemTransformUndoCommand.h +++ b/src/domain/UBGraphicsItemTransformUndoCommand.h @@ -19,9 +19,10 @@ #include #include "UBResizableGraphicsItem.h" +#include "UBAbstractUndoCommand.h" -class UBGraphicsItemTransformUndoCommand : public QUndoCommand +class UBGraphicsItemTransformUndoCommand : public UBAbstractUndoCommand { public: UBGraphicsItemTransformUndoCommand(QGraphicsItem* pItem, @@ -31,6 +32,8 @@ class UBGraphicsItemTransformUndoCommand : public QUndoCommand const QSizeF& prevSize = QSizeF()); virtual ~UBGraphicsItemTransformUndoCommand(); + virtual UndoType getType() { return undotype_GRAPHICITEMTRANSFORM; }; + protected: virtual void undo(); virtual void redo(); diff --git a/src/domain/UBGraphicsItemUndoCommand.h b/src/domain/UBGraphicsItemUndoCommand.h index 84711bd4..d3230893 100644 --- a/src/domain/UBGraphicsItemUndoCommand.h +++ b/src/domain/UBGraphicsItemUndoCommand.h @@ -17,11 +17,13 @@ #define UBGRAPHICSITEMUNDOCOMMAND_H_ #include +#include "UBAbstractUndoCommand.h" + class UBGraphicsScene; -class UBGraphicsItemUndoCommand : public QUndoCommand +class UBGraphicsItemUndoCommand : public UBAbstractUndoCommand { public: UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, const QSet& pRemovedItems, @@ -35,6 +37,8 @@ class UBGraphicsItemUndoCommand : public QUndoCommand QSet GetAddedList() { return mAddedItems; }; QSet GetRemovedList() { return mRemovedItems; }; + virtual UndoType getType() { return undotype_GRAPHICITEM; }; + protected: virtual void undo(); virtual void redo(); diff --git a/src/domain/UBGraphicsTextItemUndoCommand.h b/src/domain/UBGraphicsTextItemUndoCommand.h index 0198d8b5..9f9a610a 100644 --- a/src/domain/UBGraphicsTextItemUndoCommand.h +++ b/src/domain/UBGraphicsTextItemUndoCommand.h @@ -17,16 +17,19 @@ #define UBGRAPHICSTEXTITEMUNDOCOMMAND_H_ #include +#include "UBAbstractUndoCommand.h" #include "UBGraphicsTextItem.h" -class UBGraphicsTextItemUndoCommand: public QUndoCommand +class UBGraphicsTextItemUndoCommand : public UBAbstractUndoCommand { public: UBGraphicsTextItemUndoCommand(UBGraphicsTextItem *textItem); virtual ~UBGraphicsTextItemUndoCommand(); + virtual UndoType getType() { return undotype_GRAPHICTEXTITEM; }; + protected: virtual void undo(); virtual void redo(); diff --git a/src/domain/UBPageSizeUndoCommand.h b/src/domain/UBPageSizeUndoCommand.h index 78cf98b8..ad295d49 100644 --- a/src/domain/UBPageSizeUndoCommand.h +++ b/src/domain/UBPageSizeUndoCommand.h @@ -17,16 +17,19 @@ #define UBPageSizeUndoCommand_H_ #include +#include "UBAbstractUndoCommand.h" class UBGraphicsScene; -class UBPageSizeUndoCommand : public QUndoCommand +class UBPageSizeUndoCommand : public UBAbstractUndoCommand { public: UBPageSizeUndoCommand(UBGraphicsScene* pScene, const QSize& previousSize, const QSize& newSize); virtual ~UBPageSizeUndoCommand(); + virtual UndoType getType() { return undotype_PAGESIZE; }; + protected: virtual void undo(); virtual void redo(); From e4c2afe65ff3f13f473beea3dc1b0b7df805d117 Mon Sep 17 00:00:00 2001 From: Ivan Ilin Date: Thu, 15 Dec 2011 16:03:57 +0200 Subject: [PATCH 11/33] UBAbstractUndoCommand now in .pri --- src/domain/UBAbstractUndoCommand.h | 6 +++--- src/domain/domain.pri | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/domain/UBAbstractUndoCommand.h b/src/domain/UBAbstractUndoCommand.h index 85dfcc11..3276284a 100644 --- a/src/domain/UBAbstractUndoCommand.h +++ b/src/domain/UBAbstractUndoCommand.h @@ -25,17 +25,17 @@ class UBAbstractUndoCommand : public QUndoCommand UBAbstractUndoCommand(); ~UBAbstractUndoCommand(); - enum UndoType : int + enum UndoType { undotype_UNKNOWN = 0, undotype_DOCUMENT = 1, undotype_GRAPHICITEMTRANSFORM = 2, undotype_GRAPHICITEM = 3, undotype_GRAPHICTEXTITEM = 4, - undotype_PAGESIZE = 5, + undotype_PAGESIZE = 5 }; - virtual UndoType getType() { return undotype_UNKNOWN; }; + virtual UndoType getType() { return undotype_UNKNOWN; } protected: virtual void undo(); diff --git a/src/domain/domain.pri b/src/domain/domain.pri index fbff6174..e3653576 100644 --- a/src/domain/domain.pri +++ b/src/domain/domain.pri @@ -21,7 +21,8 @@ HEADERS += src/domain/UBGraphicsScene.h \ src/domain/UBGraphicsStroke.h \ src/domain/UBGraphicsMediaItem.h \ src/domain/UBGraphicsAudioItem.h \ - src/domain/UBGraphicsAudioItemDelegate.h + src/domain/UBGraphicsAudioItemDelegate.h \ + src/domain/UBAbstractUndoCommand.h HEADERS += src/domain/UBGraphicsItemDelegate.h \ src/domain/UBGraphicsVideoItemDelegate.h \ @@ -52,7 +53,8 @@ SOURCES += src/domain/UBGraphicsScene.cpp \ src/domain/UBGraphicsStroke.cpp \ src/domain/UBGraphicsMediaItem.cpp \ src/domain/UBGraphicsAudioItem.cpp \ - src/domain/UBGraphicsAudioItemDelegate.cpp + src/domain/UBGraphicsAudioItemDelegate.cpp \ + src/domain/UBAbstractUndoCommand.cpp SOURCES += src/domain/UBGraphicsItemDelegate.cpp \ src/domain/UBGraphicsVideoItemDelegate.cpp \ From e8ce957c53b0664a416d3b8b1b7517ee5cde88d9 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Dec 2011 17:09:26 +0200 Subject: [PATCH 12/33] some opgrades of interactivities --- .../BlackYellow.wgt/config.xml | 16 + .../BlackYellow.wgt/css/basic.css | 506 ++++++++++++++++++ .../BlackYellow.wgt/icon.png | Bin 0 -> 1053 bytes .../BlackYellow.wgt/images/greySquare.png | Bin 0 -> 451 bytes .../BlackYellow.wgt/images/greySquare2.png | Bin 0 -> 214 bytes .../BlackYellow.wgt/images/icon-close.png | Bin 0 -> 1507 bytes .../BlackYellow.wgt/images/popupBack.png | Bin 0 -> 861 bytes .../BlackYellow.wgt/index.html | 26 + .../BlackYellow.wgt/scripts/blackYellow.js | 417 +++++++++++++++ .../scripts/jquery-1.6.2.min.js | 18 + .../scripts/jquery.disable.text.select.js | 62 +++ .../BlackYellow.wgt/scripts/languages.js | 30 ++ .../template/scripts/template2.js | 2 +- .../template/scripts/template2.js | 8 +- 14 files changed, 1081 insertions(+), 4 deletions(-) create mode 100644 resources/library/sankoreInteractivities/BlackYellow.wgt/config.xml create mode 100644 resources/library/sankoreInteractivities/BlackYellow.wgt/css/basic.css create mode 100644 resources/library/sankoreInteractivities/BlackYellow.wgt/icon.png create mode 100644 resources/library/sankoreInteractivities/BlackYellow.wgt/images/greySquare.png create mode 100644 resources/library/sankoreInteractivities/BlackYellow.wgt/images/greySquare2.png create mode 100644 resources/library/sankoreInteractivities/BlackYellow.wgt/images/icon-close.png create mode 100644 resources/library/sankoreInteractivities/BlackYellow.wgt/images/popupBack.png create mode 100644 resources/library/sankoreInteractivities/BlackYellow.wgt/index.html create mode 100644 resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/blackYellow.js create mode 100644 resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/jquery-1.6.2.min.js create mode 100644 resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/jquery.disable.text.select.js create mode 100644 resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/languages.js diff --git a/resources/library/sankoreInteractivities/BlackYellow.wgt/config.xml b/resources/library/sankoreInteractivities/BlackYellow.wgt/config.xml new file mode 100644 index 00000000..0d81a76c --- /dev/null +++ b/resources/library/sankoreInteractivities/BlackYellow.wgt/config.xml @@ -0,0 +1,16 @@ + + + + Choisir + Mnemis SA + Choisir widget + + + diff --git a/resources/library/sankoreInteractivities/BlackYellow.wgt/css/basic.css b/resources/library/sankoreInteractivities/BlackYellow.wgt/css/basic.css new file mode 100644 index 00000000..a01e8aad --- /dev/null +++ b/resources/library/sankoreInteractivities/BlackYellow.wgt/css/basic.css @@ -0,0 +1,506 @@ +body{ + width: 100%; + padding: 0; + margin: 0 auto; + height: auto; + background-color: #666; + overflow: hidden; +} + +.toggleButton, .addButton{ + width: 20px; + height: 28px; + border: none; + background-image: url(../images/greySquare.png); + font-weight: bold; + font-family: Verdana; + color: yellow; + cursor: pointer; + -webkit-border-top-left-radius: 5px; + -webkit-border-bottom-left-radius: 5px; + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; +} + +.buttonDiv, .addButtonDiv{ + position: fixed; + float: right; + z-index: 1; +} + +.addButtonDiv{ + display: none; +} + +.leftDiv{ + width: 50%; + float: left; + background-color: black; + -webkit-border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} + +.rightDiv{ + width: 50%; + float: right; + background-color: yellow; + -webkit-border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} + +.shadowDiv{ + width: 100%; + display: none; + opacity: 0.7; + background-color: black; + -webkit-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border-radius: 3px; + z-index: 100; +} + +.popupBack{ + width: 360px; + height: 138px; + position: absolute; + background-image: url(../images/popupBack.png); + background-repeat: repeat; + -webkit-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; + border-radius: 10px; + display: none; + z-index: 500; +} + +.popupContainers{ + float: left; + width: 98%; + height: 36px; + padding: 5px 3px 5px 0; + overflow: hidden; +} + +.popupLabels{ + color: yellow; + margin: 0 5px; +} + +.expresionInput{ + float: right; + width: 70%; + border: none; + font-family: Verdana,Arial,Helvetica,sans-serif; + background-color: #ffc; + -webkit-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + border-radius: 5px; +} + +.popupButtons{ + float: right; + width: 74px; + height: 28px; + margin: 4px 5px; + border: none; + background-image: url(../images/greySquare2.png); + font-family: Verdana; + color: yellow; + cursor: pointer; + -webkit-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + border-radius: 5px; +} + +.readyTask{ + margin: 2px; + padding: 2px; + width: 100%; + height: 100%; + overflow: hidden; + z-index: 100; +} + +.taskContainer{ + width: 96%; + padding: 2px; + float: left; + text-align: center; + font-family: Verdana,Arial,Helvetica,sans-serif; + font-weight: bold; +} + +.editContainer{ + position: absolute; + border: 5px solid #c7c7c7; + -webkit-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + border-radius: 5px; +} + +.closeItem{ + width: 30px; + height: 30px; + position: absolute; + background-image: url(../images/icon-close.png); + right: -15px; + top: -15px; +} + +.rightResize{ + width: 10px; + height: 65%; + cursor: e-resize; + position: absolute; + background: none; + right: -10px; + top: 20%; +} + +.bottomResize{ + width: 65%; + height: 10px; + cursor: n-resize; + position: absolute; + background: none; + bottom: -10px; + left: 20%; +} +/* +.addQstDiv{ + float: left; + padding: 5px; + margin: 2px; + font-family: Verdana,Arial,Helvetica,sans-serif; + font-size: large; +} + +.addQstButton{ + margin: 0; + border: none; + background: none; + color: #99ccff; + cursor: pointer; +} + +#addQsqSpan1{ + font-size: 30px; + margin-right: 10px !important; +} + +.qstDiv{ + width: 90%; + margin: 2px auto; + padding: 5px; + float: left; + font-family: Verdana,Arial,Helvetica,sans-serif; +} + +.qstDivDisplay{ + width: 90%; + margin: 5px 5%; + padding: 5px; + float: left; + font-family: Verdana,Arial,Helvetica,sans-serif; + border: 2px solid #cccccc; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + -moz-box-shadow: #dadada -1px 0 4px; + -webkit-box-shadow: #dadada -1px 0 4px; + box-shadow: #dadada -1px 0 4px; +} + +.spanOptConn{ + float: left; + width: 100%; +} + +.qstNumber{ + float: left; + font-size: 30px; + margin-left: 10px !important; + color: #00C6FF; +} + +.qstOptions{ + float: right; +} + +.changeOptions{ + border: none; + background-image: url(../images/grayClose.png); + background-color: white; + background-repeat: no-repeat; + background-position: 0 50%; + width: auto; + padding-left: 18px; + color: #00C6FF; + cursor: pointer; +} + +.applyChanges{ + border: none; + background-image: url(../images/blueClose.png); + background-color: white; + background-repeat: no-repeat; + background-position: 0 50%; + width: auto; + padding-left: 18px; + color: #00C6FF; + cursor: pointer; +} + +.qstDelete{ + border: none; + background-image: url(../images/boldClose.png); + background-color: white; + background-repeat: no-repeat; + background-position: 0 50%; + width: auto; + padding-left: 28px; + line-height: 35px; + cursor: pointer; +} + +.qstContent{ + float: left; + padding: 3px; + margin-left: 10px; + margin-bottom: 10px; + width: 95%; + font-family: Verdana,Arial,Helvetica,sans-serif; + font-size: small; + border: 3px solid #ccc; + -webkit-border-radius: 5px; + border-radius: 5px; + -moz-box-shadow: #dadada -1px 0 4px; + -webkit-box-shadow: #dadada -1px 0 4px; + box-shadow: #dadada -1px 0 4px; +} + +.qstContentDisplay{ + float: left; + padding: 5px; + margin: 10px; + width: 100%; + font-family: Verdana,Arial,Helvetica,sans-serif; + color:#333333; +} + +.ansDiv{ + float: left; + margin-left: 100px; + width: 80%; +} + +.ansAdd{ + border: none; + background: url(../images/blueClose.png) -0px -0px no-repeat; + background-color: white; + width: auto; + padding-left: 20px; + line-height: 24px; + color: #99ccff; + cursor: pointer; +} + +.newAnswer{ + float: left; + width: 100%; + margin: 3px; + -webkit-border-radius: 5px; + border-radius: 5px; +} + +.ansSpan{ + border: none; + background-color: white; + color: #00C6FF; + font-size: 14px; + float: left; + margin: 0 3px; + width: 20px; +} + +.ansSpanDisplay{ + color: #00C6FF; + font-size: 14px; + float: left; +} + +.ansContent{ + padding: 1px 3px 3px 3px; + margin-left: 5px; + font-family: Verdana,Arial,Helvetica,sans-serif; + font-size: small; + width: 80%; + float: left; + border: 3px solid #ccc; + -webkit-border-radius: 5px; + border-radius: 5px; + -moz-box-shadow: #dadada -1px 0 4px; + -webkit-box-shadow: #dadada -1px 0 4px; + box-shadow: #dadada -1px 0 4px; +} + +.ansContentDisplay{ + padding: 1px 3px 3px 3px; + margin-left: 5px; + font-family: Verdana,Arial,Helvetica,sans-serif; + font-size: small; + width: 90%; + float: left; + -webkit-border-radius: 5px; + border-radius: 5px; +} + +.ansDelete{ + float: left; + border: none; + background-image: url(../images/boldGreyClose.png); + background-color: white; + background-repeat: no-repeat; + background-position: 0 50%; + cursor: pointer; + margin: 0 5px; +} + +.qstOptChoice{ + width: 80%; + margin: 10px 10%; + float: left; + background-color: #F3F3F2; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-style: solid; + border-right-style: solid; + border-bottom-style: solid; + border-left-style: solid; + border-top-color: #ECECEB; + border-right-color: #ECECEB; + border-bottom-color: #ECECEB; + border-left-color: #ECECEB; + border-top-left-radius: 5px 5px; + border-top-right-radius: 5px 5px; + border-bottom-right-radius: 5px 5px; + border-bottom-left-radius: 5px 5px; + -webkit-box-shadow: #dededd 0 0 2px inset; + padding: 0; +} + +.optDescImg{ + padding: 2px; + margin: 5px; + background: url(../images/tool.png) -0px -0px no-repeat; + float: left; + margin-left: 20px; + width: 56px; + height: 51px; +} + +.optDescText{ + text-align: center; + width: 70%; + color: #666666; + float: left; + font-size: small; + font-family: Verdana,Arial,Helvetica,sans-serif; + margin: 3px 5px; + padding: 5px; +} + +.type{ + float: left; + margin: 10px; + padding: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; + -moz-box-shadow: #dadada -1px 0 4px; + -webkit-box-shadow: #dadada -1px 0 4px; + box-shadow: #dadada -1px 0 4px; +} + +.contentType{ + width: 100%; + padding: 0; + margin: 0; + background-color: white; + border-bottom: 1px solid #DFDFDE; + border-top-left-radius: 5px 5px; + border-top-right-radius: 5px 5px; +} + +.divType1, .divType2, .divType3 { + width: 122px; + height: 97px; + padding: 0 15px; + margin-left: 30px; +} + +.divType1{ + background: url(../images/1thOption.png)-0px -0px no-repeat; +} + +.divType2{ + background: url(../images/2thOption.png)-0px -0px no-repeat; +} + +.divType3{ + background: url(../images/3thOption.png)-0px -0px no-repeat; +} + +.textType{ + width: 160px; + font-size: small; + font-family: Verdana,Arial,Helvetica,sans-serif; + color: #666; + padding: 3px; + margin-left: 20px; +} + +.radioDiv{ + background-color: #F5F5F5; + border-top: 1px solid white; + width: 100%; + padding: 0; + margin: 0; + height: 30px; + border-bottom-right-radius: 5px 5px; + border-bottom-left-radius: 5px 5px; +} + +.radioType{ + float: right; + margin: 2px; + padding: 3px; +} + +.popupWordInfo{ + position: absolute; + display: none; + width: 100px; + height: 20px; + top: 0; + left: 0; + text-align: center; + border: 1px solid #B9B9B9; + background-color: #eaebeb; + color: #666; + -webkit-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: #dadada -1px 0 4px; + box-shadow: #dadada -1px 0 4px; + z-index: 100; +} +*/ \ No newline at end of file diff --git a/resources/library/sankoreInteractivities/BlackYellow.wgt/icon.png b/resources/library/sankoreInteractivities/BlackYellow.wgt/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8c64a6a81ec0691e770df1bba7ff60bb9b26c70f GIT binary patch literal 1053 zcmb7D{WIGK9R4I})XR`~f4S3i^t{YzP;#-ZQcV=|R-)Kyi$%O^N;uhY_Z`LJX0%pT zvC+sfSy!puAjx9u+QD+^E}Tz&kxTpA6b0taZ7U- za{#c6jNm31QLwwF6yu!%S()1z`9L*4aBw|Dsq-Ti|MClnH7v2&b zHii`O(R`i}5rIYny&jlMAP5i$puHW=oPmZ0U@(Bgf%SD*T!g_vV=@rYM5BTDcq6Yx zbVWRYNI~Qy-bAcJ{(|U%*pFC` zID_bkC`2qme1zD9n2AOm;+Jo18C;wYn`o5(f8bI>tUmx*AIUw+mp)i+oh@2o(0DnO zHW95E>mgTIQb{ag-kt2Ir&FdbCh9u}pN#pB^gLGGDEai?cdQ(~u-43NS(Q)qTFq#>ZRs0=4T|BPCv=?`Kxi4blXdMB;vC8F+)Zan zx;)1qTI%712icJN7*`aTzI(?PATj$^hV0Af0_XsrllRX(pfaaldkcLxYcwn1wV+`)u_clqq1#fn6-yc!cs0nkb9n+a$X+H^IgywRy zSXxu!$Z4*SQxl}{;)rzo4>(o9it7i?N4;$6TK;@i8R-y3OQ!3{DPWBKo+^1wkqp($LyXvS{!9mwV@wvj@ YtE6;Ny z@A)-#xU)-J6}JcWOB@Ode;8O|CZt=%(Sox4^~pERUj6eGZz6SYHk+EsN;6o5E&HBd z`u=T&rL_lJ@LSF5A$Q?zJO8Z0K8w+?8E+L`;!rxealO9g;*Z;Fq=r0uIbU*$x234; zzds{`ZgvjqC-O<|0q3AB{j>54xZ9RC@r>HV*2>-Ye#I_}smM4jBefjN5euKUe5)k1 z9}YX-(|o3xU!;e+NRRETrf*)@dNjHtR>s8*EKVNz=EYL^*S2HQoz8;N0rmRa)*rds cuU6WD0@}Xl&KE=6T;p>KQfwtbe!&d?LC`!xx)vzHS>O>_ z%)r2(2*Qjj?3ZUUFfb;2x;TbZ%z1ljZ{8sTfde0{tvLfHwT5SG+Z4F+179Qi0)01m z741;T1woNFxKp)_pC0b?sF77#)#tIK{mQ-kO;3*gIz5S9UTC7>vs5eJ%U^1@=9ttl zI503Qxa>5ixvqq{!RGWM3%^PKYL^SUDxOPQ@4xus=ZZB`v&?2!&Qtcf=Pfw#dFAc5 z-y&pgzum3!^5r6nx;59MG_RMg-5Ru0tRrJ>s8{8>?>ldvd0w2p|8}VKq#b1|1Q<_m zvXS}L_vNo`Mb%@0fY|RE|Jz&AlornP$WRlS)kz%F!sV(2(~0MaZ#h={GE-3yZCUtu zmrKgpz26T0liHNB_G%QnE>R7Z%<4IQhI;jPQ$5JZGZfEhb@kjKw z_%54l;v0T?>HFUt458Ud6J9+3ea_W|A#&Q?BZcelzc1UBC{f4A>fW9hw(N2NFb)_z MUHx3vIVCg!03ZOun*aa+ literal 0 HcmV?d00001 diff --git a/resources/library/sankoreInteractivities/BlackYellow.wgt/images/greySquare2.png b/resources/library/sankoreInteractivities/BlackYellow.wgt/images/greySquare2.png new file mode 100644 index 0000000000000000000000000000000000000000..c0a7f14e8cc02340252ef48d9b5893d72b72239a GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^UO+6v!3HFcv1`r-Qgc0B978H@y}fD3cgTRpE%AP* zvcghXA^y^sbNyO*jJg|H=4zdYvGxAXYFAmU^ft&#T=!?5nQi{&{4?7(a7^C7sVv#{ zI%4(O2QvCOQelEu_b_~_UiDP*ocZ6myVo+g+;3pw(pUf@*hB&x7+HaYA(*@19KUPK ziyrQYNe5n>2o?O!u|Srw#Q)W-=~g($@^iH5Tk`d%-?cw2}%pE)tDgY(m6A=;N zpP!$vtE;O!S6NwUzIN@}`P$mrgvQ3k#MszaV|I47v8=2t9REWC0s=I&hSw_GZNMEV z?Oa7l5)%`3_wL=Z^z`&(&CJZSEiW(sgx{eUD=RCn=jZ49y1Tn`($dmQI-M?vH=tr& zUMCUDSx~Ll>jTo$(<7Rino?f8c=5fI?CH~|`x6rr`_l1e&z^k;4@E{tM;rY8{k5cv zb;{il3zquQj%_xZxxKwTcXf63Pf`d=58&Dzc;GE$*2I9jH)?8Xb`}>G4_NjMtiO)9 zM`$#fK+-9-TuQ3;^YaUWa`U4{kMf~pn-q0*b?t?QhOSEqr7)RH8$&}wdxG^?SB$Z9 zOs*D_3qJ+NLu)phBayK-So#+&Zfk9dC{2qg~Yk_!ptLoT*jt+6dFEw^dG z!otEnV(sGI3l}bI#KpxOiE&_H;CfC@&X$jlk8@0^RIW`=Pw$eh-rn9XpzA%12XUz> z1Y$odG9Zgn#>dCMCE@$`@9&6}qe*NC?kg`Z-xkKh!ooH{;7BS;KJl8oyu2+MpPiju zz1{w}CLyb< zNoa0vZqFSlTBVazh@U6&fq{WdnlCOceyCEZKE_y>3$eGiccQ^yxPx~0F9}LZ3CXc8 zCMEZ#q@=jS{OZ-KTheBN-t8zUG^R>$93j?Y@FLuOb8KvEi3AG^3tf~@mLC^Wal)a^ z?uyq?U*`km7rb8wK9agx2VyHul|r1e->~qmxFHC2NmfY{i4F;JwbV;!9FE%W?ChMz z`=@|QayiNgh())_!eTpW^Yw9cc^X`~a%GcS=0B+CMvU2rLtIV@Zs3s$h2qlLvuE$1 ztiBf9N(xR(N^KRFgMH5C35?waE=e1RoPAF1%nCQ=qnUh;Cht7_OG``tx8<3cnVYC{ z2Wekl-z$vSflo-cv}MZKbZX#cAQj{{aeMd@{d!6u9~l|h%E-vrl*V10Nd5i&&IAPM z&lrCQ+#sE-+vSjO9*cZ*S%AwRzl#!T#U*d*$&)9)3kt~^YJ<2EZ4m|s2e*Wh;U4gJ zb#*lz3a!9h(#1ND9E&a&0e}we4}mNqhlRB3LEJD`P-?$P?^psRCnx{FrQsE-V~8y! z(k#|>>_x!k>I2X&sBqU^t=73I)=?z|M zWnFHsJ}#F%7BsSpC>!&DQs6V-0kZ!qpaahx^bF5D;JH$ky~Jyctjq0X@5uF*T|;p> z&pRh&nLq(h1e7p}cr24;th^?ab)0y;m3~F2xXc1si3x~iORRj-#PhR-=S(ac$ZJ*Z zz9u|YSX>olJ*CvCC;6ZL(IPv{VJ(q^i{7NL_lLWK^ zRt;YdcDXPvTvGlrsf0Gd1pX~J<-($HQ~A%N9@+~Vho1-6UDy)-Ri2t8p<}Q`_#N=X z1uwi%URz2qp;$E>cwEw51-YT#(HaE<3N@^FWa<6{Ii{Y|ss*ize#5v&nr=177WIf$ zCa6-pFeE(&=rqU*^*1eFP^c(2Bs`wd^#_@yW@wNiXerFWS2{LJ7*@_1vycjC9jq0; z*Kt%rTDflAhdhIJz=q(b9hW7T^0)B>(gJ-COT%wC?n^kjcgstNKow^2-jNc5k`_a1 z5xiHV4IAF=Q;ve3(k_W-f)2&7VcNT8iiP{vpAZ#-Iz_9Y*Sk?lI_NrWpC}TPDx9Ix zyJpHz&^cO``H(_rF)RW9)UjW}tTJOPgH%BqU`hA^N0qRWGf)j_h4$x&r5#r#Y$=b7 zjgWzyffe|y;~xpf%5!51G67wM9l&2YUP-u7-Wdf+#h78yV~6e}h^JoAt_Agq-W;xZ zy7e5czqC_9rJ^y$;PIAjD##*rllD)LP*fPIJ?iPYf{as_XurNUWNYJp{;0Dp`R3#D oyTL?h>C4>@-#$exJ-g2v@=)^QLGsBqzQ!}?Z0~OS`Eu~{e}+Vj(EtDd literal 0 HcmV?d00001 diff --git a/resources/library/sankoreInteractivities/BlackYellow.wgt/index.html b/resources/library/sankoreInteractivities/BlackYellow.wgt/index.html new file mode 100644 index 00000000..a77d4cfd --- /dev/null +++ b/resources/library/sankoreInteractivities/BlackYellow.wgt/index.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + diff --git a/resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/blackYellow.js b/resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/blackYellow.js new file mode 100644 index 00000000..4ab6ae73 --- /dev/null +++ b/resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/blackYellow.js @@ -0,0 +1,417 @@ +/* + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +function init(){ + + //variables + var toggleFlag = false; // detects toggling in toggle button + var endFlag = false; // ending of toggling in toggle button + var addToggleStart = false; // detects toggling in add button + var addToggleEnd = false; // ending of toggling in add button + var shadowOver = false; + var mode = false; + var popupFlag = false + var flagForSelect = false; + var dragElement = null; //the element that must be dragging + var lang = ""; //locale language + var coords = { + left:0, + top:0 + } + + var resizeObj = { + y:false, + x:false, + width:0, + height:0 + } + + if(window.sankore){ + try{ + lang = sankore.locale().substr(0,2); + sankoreLang[lang].edit; + } catch(e){ + lang = "en"; + } + } else + lang = "en"; + + var opacityChanged = false; + + if(window.sankore){ + if(sankore.preference("blackYellowData","")){ + var importArray = jQuery.parseJSON(sankore.preference("blackYellowData","")); + for(var i in importArray){ + var tmpReadyTask = $("
"); + var exprContainer = $("
" + importArray[i].data1 + "
").appendTo(tmpReadyTask); + var resContainer = $("
"+ importArray[i].data2 + "
").appendTo(tmpReadyTask); + tmpReadyTask.width(importArray[i].width) + .height(importArray[i].height) + .css("position","absolute") + .css("top",importArray[i].top) + .css("left",importArray[i].left); + tmpReadyTask.appendTo("body"); + } + } + $(document).disableTextSelect(); + } + + /* ------------- BUTTONS -------------*/ + + // toggle button + var buttonDiv = $("
").appendTo("body"); + var toggleButton = $("").appendTo("#buttonDiv"); + buttonDiv.css({ + top:"10px", + right:0 + }); + + //toggle mode + toggleButton.click(function(){ + if(!shadowOver){ + if(mode){ + mode = false; + addButtonDiv.css("display","none"); + $(".leftDiv, .rightDiv").animate({ + "opacity":"1" + },"slow",function(){ + if(opacityChanged){ + if($(".editContainer").size() != 0){ + $(".editContainer").each(function(index, domElem){ + var tmpReadyTask = $(domElem).find(".readyTask"); + tmpReadyTask.width($(domElem).width()) + .height($(domElem).height()) + .css("position","absolute") + .css("top",$(domElem).position().top) + .css("left",$(domElem).position().left) + .find(".taskContainer").removeAttr("contenteditable"); + + $(domElem).remove(); + tmpReadyTask.appendTo("body"); + }); + } + opacityChanged = false; + } + }); + $(document).disableTextSelect(); + } else { + mode = true; + addButtonDiv.css("display","block"); + $(document).enableTextSelect(); + $(".leftDiv, .rightDiv").animate({ + "opacity":"0.4" + },"slow",function(){ + if(!opacityChanged){ + if($(".readyTask").size() != 0){ + $(".readyTask").each(function(index, domElem){ + var editContent = $("
").width($(domElem).width() + 10).height($(domElem) + 10).appendTo("body"); + var closeItem = $("
").appendTo(editContent); + var rightResize = $("
").appendTo(editContent); + var bottomResize = $("
").appendTo(editContent); + editContent.css("top", $(domElem).position().top).css("left", $(domElem).position().left); + $(domElem).css("position","static") + .width("100%") + .height("100%") + .find(".taskContainer").attr("contenteditable", "true"); + $(domElem).appendTo(editContent); + }); + } + opacityChanged = true; + } + }); + + } + toggleButton.trigger("mouseout"); + } + }); + + // toggle button events + toggleButton.mouseover(function(){ + if(!shadowOver){ + if(!toggleFlag && !endFlag){ + endFlag = true; + toggleButton.animate({ + width:"115px" + },"fast",function(){ + toggleFlag = true; + if(!mode) + toggleButton.text(sankoreLang[lang].edit); + else + toggleButton.text(sankoreLang[lang].display); + }); + } + } + }); + + toggleButton.mouseout(function(){ + if(!shadowOver){ + if(toggleFlag && endFlag){ + endFlag = false; + toggleButton.animate({ + width:"20px" + },"fast", function(){ + toggleButton.text("<"); + toggleFlag = false; + }); + } + } + }); + + //add button + var addButtonDiv = $("
").appendTo("body"); + var addButton = $("").appendTo("#addButtonDiv"); + addButtonDiv.css({ + top:"47px", + right:0 + }); + + // add button events + addButton.click(function(){ + shadowDiv.show("fast", function(){ + shadowOver = true; + popupBack.show("slow"); + }); + $(document).disableTextSelect(); + addButton.trigger("mouseout"); + }); + + addButton.mouseover(function(){ + if(!shadowOver){ + if(!addToggleStart && !addToggleEnd){ + addToggleEnd = true; + addButton.animate({ + width:"115px" + },"fast",function(){ + addToggleStart = true; + addButton.text(sankoreLang[lang].add); + }); + } + } + }); + + addButton.mouseout(function(){ + if(!shadowOver){ + if(addToggleStart && addToggleEnd){ + addToggleEnd = false; + addButton.animate({ + width:"20px" + },"fast", function(){ + addButton.text("+"); + addToggleStart = false; + }); + } + } + }); + + /* -------------- END OF WORK WITH BUTTONS ---------------*/ + + //basic divs + var leftDiv = $("
").appendTo("body"); + var rightDiv = $("
").appendTo("body"); + + //divs for adding a new item + var shadowDiv = $("
").appendTo("body"); + var popupBack = $("
").appendTo("body"); + + //input fields and buttons for a popup window + var expressionDiv = $("
").appendTo(popupBack); + var experssionLabel = $("" + sankoreLang[lang].enter_data + "").appendTo(expressionDiv); + var expresionText = $("").appendTo(expressionDiv); + + var resultDiv = $("
").appendTo(popupBack); + var resultLabel = $("" + sankoreLang[lang].enter_result + "").appendTo(resultDiv); + var resultText = $("").appendTo(resultDiv); + + var popupButtonsDiv= $("
").appendTo(popupBack); + var cancelButton = $("").appendTo(popupButtonsDiv); + var okButton = $("").appendTo(popupButtonsDiv); + + /* -------------- A WORK WITH POPUP BUTTONS AND FIELDS ---------------*/ + + $("#resultText, #expresionText").keyup(function(){ + if($(this).val()){ + $(this).css("background-color", "#ff9"); + } + }); + + cancelButton.click(function(){ + $(document).enableTextSelect(); + popupBack.hide("slow", function(){ + $("#resultText, #expresionText").val("") + .css("background-color", "#ffc"); + shadowDiv.hide("fast"); + shadowOver = false; + }); + }); + + okButton.click(function(){ + $(document).enableTextSelect(); + if(checkEmptyFields(expresionText) && checkEmptyFields(resultText)){ + popupBack.hide("slow", function(){ + shadowDiv.hide("fast"); + shadowOver = false; + addTask(expresionText.val(), resultText.val()); + $("#resultText, #expresionText").val("") + .css("background-color", "#ffc"); + }) + } + }); + + /* -------------- THE END OF WORK WITH POPUP BUTTONS AND FIELDS ---------------*/ + + // a work with dragging possibility + $("input:text").mouseover(function(){ + $(document).enableTextSelect(); + }); + + $("input:text").mouseout(function(){ + $(document).disableTextSelect(); + }); + + $(".readyTask, .editContainer").live("mousedown",function(event){ + if(!shadowOver){ + dragElement = $(this); + coords.left = event.pageX - $(this).position().left; + coords.top = event.pageY - $(this).position().top; + resizeObj.width = $(this).width(); + resizeObj.height = $(this).height(); + } + }); + + $(".rightResize").live("mousedown",function(event){ + if(!shadowOver){ + resizeObj.x = true; + } + }); + + $(".bottomResize").live("mousedown",function(event){ + if(!shadowOver){ + resizeObj.y = true; + } + }); + + $("body").mouseup(function(event){ + if(!shadowOver){ + dragElement = null; + resizeObj.x = false; + resizeObj.y = false; + } + }); + + $("body").mousemove(function(event){ + if(dragElement && !shadowOver){ + if(resizeObj.x) + dragElement.width(event.pageX - dragElement.position().left); + else if(resizeObj.y) + dragElement.height(event.pageY - dragElement.position().top); + else + dragElement.css("top",event.pageY - coords.top).css("left", event.pageX - coords.left); + } + }); + + //closing item + $(".closeItem").live("click", function(){ + if(!shadowOver){ + $(this).parent().remove(); + } + }); + + $("#leftDiv,#rightDiv,#shadowDiv").css("height", $(window).height()); + popupBack.css("top", ($(window).height() - 138)*50/$(window).height() + "%"); + popupBack.css("left", ($(window).width() - 360)*50/$(window).width() + "%"); + + $(window).resize(function(){ + $("#leftDiv,#rightDiv,#shadowDiv").css("height", $(window).height()); + popupBack.css("top", ($(window).height() - 138)*50/$(window).height() + "%"); + popupBack.css("left", ($(window).width() - 360)*50/$(window).width() + "%"); + }); + + $("html").mouseout(function(){ + if(window.sankore) + exportToSankore(); + }); + + // export data + function exportToSankore(){ + + var arrayToExport = new Array(); + if(mode){ + if($(".editContainer").size() != 0){ + $(".editContainer").each(function(index, domElem){ + var objToExport = { + data1:"", + data2:"", + width:0, + height:0, + top:0, + left:0 + } + objToExport.data1 = $(domElem).find(".readyTask").find(":first-child").text(); + objToExport.data2 = $(domElem).find(".readyTask").find(":last-child").text(); + objToExport.width = $(domElem).width(); + objToExport.height = $(domElem).height(); + objToExport.top = $(domElem).position().top; + objToExport.left = $(domElem).position().left; + arrayToExport.push(objToExport); + }); + } + } else { + if($(".readyTask").size() != 0){ + $(".readyTask").each(function(index, domElem){ + var objToExport = { + data1:"", + data2:"", + width:0, + height:0, + top:0, + left:0 + } + objToExport.data1 = $(domElem).find(":first-child").text(); + objToExport.data2 = $(domElem).find(":last-child").text(); + objToExport.width = $(domElem).width(); + objToExport.height = $(domElem).height(); + objToExport.top = $(domElem).position().top; + objToExport.left = $(domElem).position().left; + arrayToExport.push(objToExport); + }); + } + } + sankore.setPreference("blackYellowData", JSON.stringify(arrayToExport)); + } +} + +//checking empty fields +function checkEmptyFields(field){ + if(field.val() == ""){ + field.css("background-color", "red"); + return false; + } else { + field.css("background-color", "#ff9"); + return true; + } +} + +//adding a new task to the page +function addTask(expression, result){ + var editContent = $("
").width(240).height(70).appendTo("body"); + var closeItem = $("
").appendTo(editContent); + var rightResize = $("
").appendTo(editContent); + var bottomResize = $("
").appendTo(editContent); + var main = $("
"); + var exprContainer = $("
" + expression + "
").appendTo(main); + var resContainer = $("
"+ result + "
").appendTo(main); + main.appendTo(editContent); +} \ No newline at end of file diff --git a/resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/jquery-1.6.2.min.js b/resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/jquery-1.6.2.min.js new file mode 100644 index 00000000..48590ecb --- /dev/null +++ b/resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/jquery-1.6.2.min.js @@ -0,0 +1,18 @@ +/*! + * jQuery JavaScript Library v1.6.2 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Thu Jun 30 14:16:56 2011 -0400 + */ +(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"":"")+""),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(a);return this},eq:function(a){return 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(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.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=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i. +shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(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){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j +)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=_.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bo.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/)<[^<]*)*<\/script>/gi,bM=/^(?:select|textarea)/i,bN=/\s+/,bO=/([?&])_=[^&]*/,bP=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bQ=f.fn.load,bR={},bS={},bT,bU;try{bT=e.href}catch(bV){bT=c.createElement("a"),bT.href="",bT=bT.href}bU=bP.exec(bT.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bQ)return bQ.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bL,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bM.test(this.nodeName)||bG.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bD,"\r\n")}}):{name:b.name,value:c.replace(bD,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bT,isLocal:bH.test(bU[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bW(bR),ajaxTransport:bW(bS),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?bZ(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b$(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bE,"").replace(bJ,bU[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bN),d.crossDomain==null&&(r=bP.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bU[1]&&r[2]==bU[2]&&(r[3]||(r[1]==="http:"?80:443))==(bU[3]||(bU[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bX(bR,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bI.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bK.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bO,"$1_="+x);d.url=y+(y===d.url?(bK.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bX(bS,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bB,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn,co=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cr("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cu.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cu.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cv(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cv(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/jquery.disable.text.select.js b/resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/jquery.disable.text.select.js new file mode 100644 index 00000000..2e06f673 --- /dev/null +++ b/resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/jquery.disable.text.select.js @@ -0,0 +1,62 @@ +/** + * .disableTextSelect - Disable Text Select Plugin + * + * Version: 1.1 + * Updated: 2007-11-28 + * + * Used to stop users from selecting text + * + * Copyright (c) 2007 James Dempster (letssurf@gmail.com, http://www.jdempster.com/category/jquery/disabletextselect/) + * + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + **/ + +/** + * Requirements: + * - jQuery (John Resig, http://www.jquery.com/) + **/ +(function($) { + if ($.browser.mozilla) { + $.fn.disableTextSelect = function() { + return this.each(function() { + $(this).css({ + 'MozUserSelect' : 'none' + }); + }); + }; + $.fn.enableTextSelect = function() { + return this.each(function() { + $(this).css({ + 'MozUserSelect' : '' + }); + }); + }; + } else if ($.browser.msie) { + $.fn.disableTextSelect = function() { + return this.each(function() { + $(this).bind('selectstart.disableTextSelect', function() { + return false; + }); + }); + }; + $.fn.enableTextSelect = function() { + return this.each(function() { + $(this).unbind('selectstart.disableTextSelect'); + }); + }; + } else { + $.fn.disableTextSelect = function() { + return this.each(function() { + $(this).bind('mousedown.disableTextSelect', function() { + return false; + }); + }); + }; + $.fn.enableTextSelect = function() { + return this.each(function() { + $(this).unbind('mousedown.disableTextSelect'); + }); + }; + } +})(jQuery); \ No newline at end of file diff --git a/resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/languages.js b/resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/languages.js new file mode 100644 index 00000000..fceb7e64 --- /dev/null +++ b/resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/languages.js @@ -0,0 +1,30 @@ +var sankoreLang = { + "en":{ + "edit": "Edit", + "display":"Display", + "add":"Add", + "enter_data":"Enter data:", + "enter_result":"Enter result:", + "ok":"Ok", + "cancel":"Cancel" + }, + "ru":{ + "edit": "Изменить", + "display":"Показать", + "add":"Добавить", + "enter_data":"Введите вопрос:", + "enter_result":"Введите ответ:", + "ok":"Ок", + "cancel":"Отмена" + }, + "fr":{ + "edit": "Modifier", + "display":"Afficher", + "add":"Ajouter", + "enter_data":"Entrer les données:", + "enter_result":"Entrez le résultat:", + "ok":"Ok", + "cancel":"Annuler" + } +}; + diff --git a/resources/library/sankoreInteractivities/ord-phrases.wgt/template/scripts/template2.js b/resources/library/sankoreInteractivities/ord-phrases.wgt/template/scripts/template2.js index 7e6e14a9..bacfa21d 100644 --- a/resources/library/sankoreInteractivities/ord-phrases.wgt/template/scripts/template2.js +++ b/resources/library/sankoreInteractivities/ord-phrases.wgt/template/scripts/template2.js @@ -208,7 +208,7 @@ function modeEdit() // if no sankore api, insert ok button if( !isSankore ) { - $( "#mp_setup" ).empty().append( '' ); + $( "#mp_setup" ).empty().append( '' ); $( "#mp_setup input:button" ).click( function(){ modeView(); }); diff --git a/resources/library/sankoreInteractivities/ord-words.wgt/template/scripts/template2.js b/resources/library/sankoreInteractivities/ord-words.wgt/template/scripts/template2.js index bb06994c..5c40bb64 100644 --- a/resources/library/sankoreInteractivities/ord-words.wgt/template/scripts/template2.js +++ b/resources/library/sankoreInteractivities/ord-words.wgt/template/scripts/template2.js @@ -236,7 +236,7 @@ function modeEdit() // if no sankore api, insert ok button if( !isSankore ) { - $( "#mp_setup" ).empty().append( '' ); + $( "#mp_setup" ).empty().append( '' ); $( "#mp_setup input:button" ).click( function(){ modeView(); }); @@ -249,9 +249,11 @@ $(window).mouseout(function(){ if(window.sankore){ var str = ""; $( "#mp_word .letter" ).each( function(){ - str += $(this).text(); + str += $(this).text() + "*"; }); - + + str = str.substr(0, str.length - 1); + sankore.setPreference("currentOrdWords", str); sankore.setPreference("rightOrdWords", word); } From 2ceefe7303ffcc65877ad5a993ff0510b52636e1 Mon Sep 17 00:00:00 2001 From: Ivan Ilin Date: Thu, 15 Dec 2011 19:18:40 +0200 Subject: [PATCH 13/33] created undoredo stack blocker --- src/adaptors/UBCFFSubsetAdaptor.cpp | 1 + src/domain/UBGraphicsScene.cpp | 84 ++++++++++++++++++++--------- src/domain/UBGraphicsScene.h | 7 +++ 3 files changed, 67 insertions(+), 25 deletions(-) diff --git a/src/adaptors/UBCFFSubsetAdaptor.cpp b/src/adaptors/UBCFFSubsetAdaptor.cpp index 223d9b2f..aeb0a2a8 100644 --- a/src/adaptors/UBCFFSubsetAdaptor.cpp +++ b/src/adaptors/UBCFFSubsetAdaptor.cpp @@ -1002,6 +1002,7 @@ void UBCFFSubsetAdaptor::UBCFFSubsetReader::repositionSvgItem(QGraphicsItem *ite bool UBCFFSubsetAdaptor::UBCFFSubsetReader::createNewScene() { mCurrentScene = UBPersistenceManager::persistenceManager()->createDocumentSceneAt(mProxy, mProxy->pageCount()); + mCurrentScene->setURStackEnable(false); mCurrentSceneRect = mCurrentScene->normalizedSceneRect(); mVBTransFactor = qMin(mCurrentSceneRect.width() / mViewPort.width(), mCurrentSceneRect.height() / mViewPort.height()); diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 6625095e..e51ee548 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -93,8 +93,10 @@ UBGraphicsScene::UBGraphicsScene(UBDocumentProxy* parent) , mCurrentStroke(0) , mShouldUseOMP(true) , mItemCount(0) + , enableUndoRedoStack(true) , magniferControlViewWidget(0) , magniferDisplayViewWidget(0) + { #ifdef __ppc__ @@ -139,6 +141,8 @@ UBGraphicsScene::UBGraphicsScene(UBDocumentProxy* parent) } connect(this, SIGNAL(selectionChanged()), this, SLOT(selectionChangedProcessing())); + + } UBGraphicsScene::~UBGraphicsScene() @@ -371,10 +375,13 @@ bool UBGraphicsScene::inputDeviceRelease() if (mRemovedItems.size() > 0 || mAddedItems.size() > 0) { - UBGraphicsItemUndoCommand* udcmd = new UBGraphicsItemUndoCommand(this, mRemovedItems, mAddedItems); //deleted by the undoStack - if(UBApplication::undoStack) - UBApplication::undoStack->push(udcmd); + if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented + UBGraphicsItemUndoCommand* udcmd = new UBGraphicsItemUndoCommand(this, mRemovedItems, mAddedItems); //deleted by the undoStack + + if(UBApplication::undoStack) + UBApplication::undoStack->push(udcmd); + } mRemovedItems.clear(); mAddedItems.clear(); @@ -961,8 +968,11 @@ void UBGraphicsScene::clearItemsAndAnnotations() // force refresh, QT is a bit lazy and take a lot of time (nb item ^2 ?) to trigger repaint update(sceneRect()); - UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, removedItems, emptyList); - UBApplication::undoStack->push(uc); + if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented + UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, removedItems, emptyList); + UBApplication::undoStack->push(uc); + } + setDocumentUpdated(); } @@ -995,8 +1005,12 @@ void UBGraphicsScene::clearItems() // force refresh, QT is a bit lazy and take a lot of time (nb item ^2 ?) to trigger repaint update(sceneRect()); - UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, removedItems, emptyList); - UBApplication::undoStack->push(uc); + + if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented + UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, removedItems, emptyList); + UBApplication::undoStack->push(uc); + } + setDocumentUpdated(); } @@ -1022,8 +1036,12 @@ void UBGraphicsScene::clearAnnotations() // force refresh, QT is a bit lazy and take a lot of time (nb item ^2 ?) to trigger repaint update(sceneRect()); - UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, removedItems, emptyList); - UBApplication::undoStack->push(uc); + + if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented + UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, removedItems, emptyList); + UBApplication::undoStack->push(uc); + } + setDocumentUpdated(); } @@ -1044,8 +1062,10 @@ UBGraphicsPixmapItem* UBGraphicsScene::addPixmap(const QPixmap& pPixmap, const Q addItem(pixmapItem); - UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, pixmapItem); - UBApplication::undoStack->push(uc); + if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented + UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, pixmapItem); + UBApplication::undoStack->push(uc); + } pixmapItem->scale(pScaleFactor, pScaleFactor); @@ -1070,8 +1090,10 @@ UBGraphicsPixmapItem* UBGraphicsScene::addPixmap(const QPixmap& pPixmap, const Q void UBGraphicsScene::textUndoCommandAdded(UBGraphicsTextItem *textItem) { - UBGraphicsTextItemUndoCommand* uc = new UBGraphicsTextItemUndoCommand(textItem); - UBApplication::undoStack->push(uc); + if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented + UBGraphicsTextItemUndoCommand* uc = new UBGraphicsTextItemUndoCommand(textItem); + UBApplication::undoStack->push(uc); + } } @@ -1090,8 +1112,10 @@ UBGraphicsVideoItem* UBGraphicsScene::addVideo(const QUrl& pVideoFileUrl, bool s videoItem->show(); - UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, videoItem); - UBApplication::undoStack->push(uc); + if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented + UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, videoItem); + UBApplication::undoStack->push(uc); + } videoItem->mediaObject()->play(); @@ -1121,8 +1145,10 @@ UBGraphicsAudioItem* UBGraphicsScene::addAudio(const QUrl& pAudioFileUrl, bool s audioItem->show(); - UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, audioItem); - UBApplication::undoStack->push(uc); + if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented + UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, audioItem); + UBApplication::undoStack->push(uc); + } audioItem->mediaObject()->play(); @@ -1197,8 +1223,10 @@ void UBGraphicsScene::addGraphicsWidget(UBGraphicsWidgetItem* graphicsWidget, co // graphicsWidget->widgetWebView()->loadMainHtml(); graphicsWidget->setSelected(true); - UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, graphicsWidget); - UBApplication::undoStack->push(uc); + if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented + UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, graphicsWidget); + UBApplication::undoStack->push(uc); + } setDocumentUpdated(); } @@ -1253,8 +1281,10 @@ UBGraphicsSvgItem* UBGraphicsScene::addSvg(const QUrl& pSvgFileUrl, const QPoint addItem(svgItem); - UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, svgItem); - UBApplication::undoStack->push(uc); + if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented + UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, svgItem); + UBApplication::undoStack->push(uc); + } setDocumentUpdated(); @@ -1314,8 +1344,10 @@ UBGraphicsTextItem* UBGraphicsScene::addTextWithFont(const QString& pString, con textItem->show(); - UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, textItem); - UBApplication::undoStack->push(uc); + if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented + UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, textItem); + UBApplication::undoStack->push(uc); + } connect(textItem, SIGNAL(textUndoCommandAdded(UBGraphicsTextItem *)), this, SLOT(textUndoCommandAdded(UBGraphicsTextItem *))); @@ -1337,8 +1369,10 @@ UBGraphicsTextItem *UBGraphicsScene::addTextHtml(const QString &pString, const Q addItem(textItem); textItem->show(); - UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, textItem); - UBApplication::undoStack->push(uc); + if (enableUndoRedoStack) { //should be deleted after scene own undo stack implemented + UBGraphicsItemUndoCommand* uc = new UBGraphicsItemUndoCommand(this, 0, textItem); + UBApplication::undoStack->push(uc); + } connect(textItem, SIGNAL(textUndoCommandAdded(UBGraphicsTextItem *)), this, SLOT(textUndoCommandAdded(UBGraphicsTextItem *))); diff --git a/src/domain/UBGraphicsScene.h b/src/domain/UBGraphicsScene.h index f4364e34..416c2344 100644 --- a/src/domain/UBGraphicsScene.h +++ b/src/domain/UBGraphicsScene.h @@ -55,6 +55,8 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem Q_OBJECT public: + // tmp stub for divide addings scene objects from undo mechanism implementation + void setURStackEnable(bool set = true) {enableUndoRedoStack = set;} UBGraphicsScene(UBDocumentProxy *parent); virtual ~UBGraphicsScene(); @@ -363,8 +365,13 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem //int mMesure1Ms, mMesure2Ms; bool mHasCache; + // tmp stub for divide addings scene objects from undo mechanism implementation + bool enableUndoRedoStack; + UBMagnifier *magniferControlViewWidget; UBMagnifier *magniferDisplayViewWidget; + + }; #endif /* UBGRAPHICSSCENE_H_ */ From 7cd7d93c79b37f99c3853037b7bf5b836621d21e Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Fri, 16 Dec 2011 10:08:59 +0300 Subject: [PATCH 14/33] SANKORE-436 fix memory leak with switch page --- src/gui/UBDocumentNavigator.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/UBDocumentNavigator.cpp b/src/gui/UBDocumentNavigator.cpp index fea695f4..f69c2106 100644 --- a/src/gui/UBDocumentNavigator.cpp +++ b/src/gui/UBDocumentNavigator.cpp @@ -161,6 +161,7 @@ void UBDocumentNavigator::updateSpecificThumbnail(int iPage) mScene->removeItem(pItem); mScene->addItem(pixmapItem); mThumbnails.replace(iPage, pixmapItem); + delete pItem; } } } From cef6e1a88d6940166ab44a53208583220804a893 Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Fri, 16 Dec 2011 12:16:47 +0300 Subject: [PATCH 15/33] SANKORE-428 move BlackYello.wgt and Choisir.wgt to interactive folder in source folder .\Sankore\Sankore-3.1\resources\library --- .../interactive/BlackYellow.wgt/config.xml | 16 - .../interactive/BlackYellow.wgt/css/basic.css | 506 ------------------ .../interactive/BlackYellow.wgt/icon.png | Bin 1053 -> 0 bytes .../BlackYellow.wgt/images/greySquare2.png | Bin 214 -> 0 bytes .../BlackYellow.wgt/images/icon-close.png | Bin 1507 -> 0 bytes .../BlackYellow.wgt/images/popupBack.png | Bin 861 -> 0 bytes .../interactive/BlackYellow.wgt/index.html | 26 - .../BlackYellow.wgt/scripts/blackYellow.js | 409 -------------- .../scripts/jquery.disable.text.select.js | 62 --- .../BlackYellow.wgt/scripts/languages.js | 30 -- .../Choisir.wgt/images/greySquare.png | Bin 451 -> 0 bytes .../Choisir.wgt/scripts/jquery-1.6.2.min.js | 18 - .../BlackYellow.wgt/scripts/blackYellow.js | 28 +- .../Choisir.wgt/config.xml | 0 .../Choisir.wgt/css/basic.css | 0 .../Choisir.wgt/icon.png | Bin .../Choisir.wgt/images/1thOption.png | Bin .../Choisir.wgt/images/2thOption.png | Bin .../Choisir.wgt/images/3thOption.png | Bin .../Choisir.wgt/images/addSomething.png | Bin .../Choisir.wgt/images/bigBlackClose.png | Bin .../Choisir.wgt/images/blueClose.png | Bin .../Choisir.wgt/images/boldBlackClose.png | Bin .../Choisir.wgt/images/boldClose.png | Bin .../Choisir.wgt/images/boldGreyClose.png | Bin .../Choisir.wgt/images/bottomLeftThing.png | Bin .../Choisir.wgt/images/complete.png | Bin .../Choisir.wgt/images/grayClose.png | Bin .../Choisir.wgt}/images/greySquare.png | Bin .../Choisir.wgt/images/greySquareArrow.png | Bin .../Choisir.wgt/images/horSep.png | Bin .../Choisir.wgt/images/leftThing.png | Bin .../Choisir.wgt/images/lessBottomBorder.png | Bin .../Choisir.wgt/images/lessTopBorder.png | Bin .../Choisir.wgt/images/lowerBack.png | Bin .../Choisir.wgt/images/lowerBorder.png | Bin .../Choisir.wgt/images/lowerBorder2.png | Bin .../Choisir.wgt/images/niceBack.png | Bin .../Choisir.wgt/images/niceBack2.png | Bin .../Choisir.wgt/images/niceBack3.png | Bin .../Choisir.wgt/images/pencil.png | Bin .../Choisir.wgt/images/point.png | Bin .../Choisir.wgt/images/redBoldClose.png | Bin .../Choisir.wgt/images/reload.jpg | Bin .../Choisir.wgt/images/reload2.png | Bin .../Choisir.wgt/images/rightThing.png | Bin .../Choisir.wgt/images/separator.png | Bin .../Choisir.wgt/images/separator2.png | Bin .../Choisir.wgt/images/settings.png | Bin .../Choisir.wgt/images/sidePoints.png | Bin .../Choisir.wgt/images/spanner.png | Bin .../Choisir.wgt/images/star.png | Bin .../Choisir.wgt/images/stop.jpg | Bin .../Choisir.wgt/images/tool.png | Bin .../Choisir.wgt/images/topLeftThing.png | Bin .../Choisir.wgt/images/transparentBack.png | Bin .../Choisir.wgt/images/upperBorder.png | Bin .../Choisir.wgt/images/upperBorder2.png | Bin .../Choisir.wgt/index.html | 0 .../Choisir.wgt}/scripts/jquery-1.6.2.min.js | 0 .../Choisir.wgt/scripts/languages.js | 0 .../Choisir.wgt/scripts/selQuestionApp.js | 0 62 files changed, 10 insertions(+), 1085 deletions(-) delete mode 100644 resources/library/interactive/BlackYellow.wgt/config.xml delete mode 100644 resources/library/interactive/BlackYellow.wgt/css/basic.css delete mode 100644 resources/library/interactive/BlackYellow.wgt/icon.png delete mode 100644 resources/library/interactive/BlackYellow.wgt/images/greySquare2.png delete mode 100644 resources/library/interactive/BlackYellow.wgt/images/icon-close.png delete mode 100644 resources/library/interactive/BlackYellow.wgt/images/popupBack.png delete mode 100644 resources/library/interactive/BlackYellow.wgt/index.html delete mode 100644 resources/library/interactive/BlackYellow.wgt/scripts/blackYellow.js delete mode 100644 resources/library/interactive/BlackYellow.wgt/scripts/jquery.disable.text.select.js delete mode 100644 resources/library/interactive/BlackYellow.wgt/scripts/languages.js delete mode 100644 resources/library/interactive/Choisir.wgt/images/greySquare.png delete mode 100644 resources/library/interactive/Choisir.wgt/scripts/jquery-1.6.2.min.js rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/config.xml (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/css/basic.css (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/icon.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/1thOption.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/2thOption.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/3thOption.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/addSomething.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/bigBlackClose.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/blueClose.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/boldBlackClose.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/boldClose.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/boldGreyClose.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/bottomLeftThing.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/complete.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/grayClose.png (100%) rename resources/library/{interactive/BlackYellow.wgt => sankoreInteractivities/Choisir.wgt}/images/greySquare.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/greySquareArrow.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/horSep.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/leftThing.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/lessBottomBorder.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/lessTopBorder.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/lowerBack.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/lowerBorder.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/lowerBorder2.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/niceBack.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/niceBack2.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/niceBack3.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/pencil.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/point.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/redBoldClose.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/reload.jpg (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/reload2.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/rightThing.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/separator.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/separator2.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/settings.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/sidePoints.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/spanner.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/star.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/stop.jpg (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/tool.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/topLeftThing.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/transparentBack.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/upperBorder.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/images/upperBorder2.png (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/index.html (100%) rename resources/library/{interactive/BlackYellow.wgt => sankoreInteractivities/Choisir.wgt}/scripts/jquery-1.6.2.min.js (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/scripts/languages.js (100%) rename resources/library/{interactive => sankoreInteractivities}/Choisir.wgt/scripts/selQuestionApp.js (100%) diff --git a/resources/library/interactive/BlackYellow.wgt/config.xml b/resources/library/interactive/BlackYellow.wgt/config.xml deleted file mode 100644 index 0d81a76c..00000000 --- a/resources/library/interactive/BlackYellow.wgt/config.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - Choisir - Mnemis SA - Choisir widget - - - diff --git a/resources/library/interactive/BlackYellow.wgt/css/basic.css b/resources/library/interactive/BlackYellow.wgt/css/basic.css deleted file mode 100644 index a01e8aad..00000000 --- a/resources/library/interactive/BlackYellow.wgt/css/basic.css +++ /dev/null @@ -1,506 +0,0 @@ -body{ - width: 100%; - padding: 0; - margin: 0 auto; - height: auto; - background-color: #666; - overflow: hidden; -} - -.toggleButton, .addButton{ - width: 20px; - height: 28px; - border: none; - background-image: url(../images/greySquare.png); - font-weight: bold; - font-family: Verdana; - color: yellow; - cursor: pointer; - -webkit-border-top-left-radius: 5px; - -webkit-border-bottom-left-radius: 5px; - border-top-left-radius: 5px; - border-bottom-left-radius: 5px; -} - -.buttonDiv, .addButtonDiv{ - position: fixed; - float: right; - z-index: 1; -} - -.addButtonDiv{ - display: none; -} - -.leftDiv{ - width: 50%; - float: left; - background-color: black; - -webkit-border-top-left-radius: 3px; - -webkit-border-bottom-left-radius: 3px; - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; -} - -.rightDiv{ - width: 50%; - float: right; - background-color: yellow; - -webkit-border-top-right-radius: 3px; - -webkit-border-bottom-right-radius: 3px; - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; -} - -.shadowDiv{ - width: 100%; - display: none; - opacity: 0.7; - background-color: black; - -webkit-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - border-radius: 3px; - z-index: 100; -} - -.popupBack{ - width: 360px; - height: 138px; - position: absolute; - background-image: url(../images/popupBack.png); - background-repeat: repeat; - -webkit-border-radius: 10px; - -webkit-border-radius: 10px; - border-radius: 10px; - border-radius: 10px; - display: none; - z-index: 500; -} - -.popupContainers{ - float: left; - width: 98%; - height: 36px; - padding: 5px 3px 5px 0; - overflow: hidden; -} - -.popupLabels{ - color: yellow; - margin: 0 5px; -} - -.expresionInput{ - float: right; - width: 70%; - border: none; - font-family: Verdana,Arial,Helvetica,sans-serif; - background-color: #ffc; - -webkit-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - border-radius: 5px; -} - -.popupButtons{ - float: right; - width: 74px; - height: 28px; - margin: 4px 5px; - border: none; - background-image: url(../images/greySquare2.png); - font-family: Verdana; - color: yellow; - cursor: pointer; - -webkit-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - border-radius: 5px; -} - -.readyTask{ - margin: 2px; - padding: 2px; - width: 100%; - height: 100%; - overflow: hidden; - z-index: 100; -} - -.taskContainer{ - width: 96%; - padding: 2px; - float: left; - text-align: center; - font-family: Verdana,Arial,Helvetica,sans-serif; - font-weight: bold; -} - -.editContainer{ - position: absolute; - border: 5px solid #c7c7c7; - -webkit-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - border-radius: 5px; -} - -.closeItem{ - width: 30px; - height: 30px; - position: absolute; - background-image: url(../images/icon-close.png); - right: -15px; - top: -15px; -} - -.rightResize{ - width: 10px; - height: 65%; - cursor: e-resize; - position: absolute; - background: none; - right: -10px; - top: 20%; -} - -.bottomResize{ - width: 65%; - height: 10px; - cursor: n-resize; - position: absolute; - background: none; - bottom: -10px; - left: 20%; -} -/* -.addQstDiv{ - float: left; - padding: 5px; - margin: 2px; - font-family: Verdana,Arial,Helvetica,sans-serif; - font-size: large; -} - -.addQstButton{ - margin: 0; - border: none; - background: none; - color: #99ccff; - cursor: pointer; -} - -#addQsqSpan1{ - font-size: 30px; - margin-right: 10px !important; -} - -.qstDiv{ - width: 90%; - margin: 2px auto; - padding: 5px; - float: left; - font-family: Verdana,Arial,Helvetica,sans-serif; -} - -.qstDivDisplay{ - width: 90%; - margin: 5px 5%; - padding: 5px; - float: left; - font-family: Verdana,Arial,Helvetica,sans-serif; - border: 2px solid #cccccc; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - -moz-box-shadow: #dadada -1px 0 4px; - -webkit-box-shadow: #dadada -1px 0 4px; - box-shadow: #dadada -1px 0 4px; -} - -.spanOptConn{ - float: left; - width: 100%; -} - -.qstNumber{ - float: left; - font-size: 30px; - margin-left: 10px !important; - color: #00C6FF; -} - -.qstOptions{ - float: right; -} - -.changeOptions{ - border: none; - background-image: url(../images/grayClose.png); - background-color: white; - background-repeat: no-repeat; - background-position: 0 50%; - width: auto; - padding-left: 18px; - color: #00C6FF; - cursor: pointer; -} - -.applyChanges{ - border: none; - background-image: url(../images/blueClose.png); - background-color: white; - background-repeat: no-repeat; - background-position: 0 50%; - width: auto; - padding-left: 18px; - color: #00C6FF; - cursor: pointer; -} - -.qstDelete{ - border: none; - background-image: url(../images/boldClose.png); - background-color: white; - background-repeat: no-repeat; - background-position: 0 50%; - width: auto; - padding-left: 28px; - line-height: 35px; - cursor: pointer; -} - -.qstContent{ - float: left; - padding: 3px; - margin-left: 10px; - margin-bottom: 10px; - width: 95%; - font-family: Verdana,Arial,Helvetica,sans-serif; - font-size: small; - border: 3px solid #ccc; - -webkit-border-radius: 5px; - border-radius: 5px; - -moz-box-shadow: #dadada -1px 0 4px; - -webkit-box-shadow: #dadada -1px 0 4px; - box-shadow: #dadada -1px 0 4px; -} - -.qstContentDisplay{ - float: left; - padding: 5px; - margin: 10px; - width: 100%; - font-family: Verdana,Arial,Helvetica,sans-serif; - color:#333333; -} - -.ansDiv{ - float: left; - margin-left: 100px; - width: 80%; -} - -.ansAdd{ - border: none; - background: url(../images/blueClose.png) -0px -0px no-repeat; - background-color: white; - width: auto; - padding-left: 20px; - line-height: 24px; - color: #99ccff; - cursor: pointer; -} - -.newAnswer{ - float: left; - width: 100%; - margin: 3px; - -webkit-border-radius: 5px; - border-radius: 5px; -} - -.ansSpan{ - border: none; - background-color: white; - color: #00C6FF; - font-size: 14px; - float: left; - margin: 0 3px; - width: 20px; -} - -.ansSpanDisplay{ - color: #00C6FF; - font-size: 14px; - float: left; -} - -.ansContent{ - padding: 1px 3px 3px 3px; - margin-left: 5px; - font-family: Verdana,Arial,Helvetica,sans-serif; - font-size: small; - width: 80%; - float: left; - border: 3px solid #ccc; - -webkit-border-radius: 5px; - border-radius: 5px; - -moz-box-shadow: #dadada -1px 0 4px; - -webkit-box-shadow: #dadada -1px 0 4px; - box-shadow: #dadada -1px 0 4px; -} - -.ansContentDisplay{ - padding: 1px 3px 3px 3px; - margin-left: 5px; - font-family: Verdana,Arial,Helvetica,sans-serif; - font-size: small; - width: 90%; - float: left; - -webkit-border-radius: 5px; - border-radius: 5px; -} - -.ansDelete{ - float: left; - border: none; - background-image: url(../images/boldGreyClose.png); - background-color: white; - background-repeat: no-repeat; - background-position: 0 50%; - cursor: pointer; - margin: 0 5px; -} - -.qstOptChoice{ - width: 80%; - margin: 10px 10%; - float: left; - background-color: #F3F3F2; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-style: solid; - border-right-style: solid; - border-bottom-style: solid; - border-left-style: solid; - border-top-color: #ECECEB; - border-right-color: #ECECEB; - border-bottom-color: #ECECEB; - border-left-color: #ECECEB; - border-top-left-radius: 5px 5px; - border-top-right-radius: 5px 5px; - border-bottom-right-radius: 5px 5px; - border-bottom-left-radius: 5px 5px; - -webkit-box-shadow: #dededd 0 0 2px inset; - padding: 0; -} - -.optDescImg{ - padding: 2px; - margin: 5px; - background: url(../images/tool.png) -0px -0px no-repeat; - float: left; - margin-left: 20px; - width: 56px; - height: 51px; -} - -.optDescText{ - text-align: center; - width: 70%; - color: #666666; - float: left; - font-size: small; - font-family: Verdana,Arial,Helvetica,sans-serif; - margin: 3px 5px; - padding: 5px; -} - -.type{ - float: left; - margin: 10px; - padding: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - -moz-box-shadow: #dadada -1px 0 4px; - -webkit-box-shadow: #dadada -1px 0 4px; - box-shadow: #dadada -1px 0 4px; -} - -.contentType{ - width: 100%; - padding: 0; - margin: 0; - background-color: white; - border-bottom: 1px solid #DFDFDE; - border-top-left-radius: 5px 5px; - border-top-right-radius: 5px 5px; -} - -.divType1, .divType2, .divType3 { - width: 122px; - height: 97px; - padding: 0 15px; - margin-left: 30px; -} - -.divType1{ - background: url(../images/1thOption.png)-0px -0px no-repeat; -} - -.divType2{ - background: url(../images/2thOption.png)-0px -0px no-repeat; -} - -.divType3{ - background: url(../images/3thOption.png)-0px -0px no-repeat; -} - -.textType{ - width: 160px; - font-size: small; - font-family: Verdana,Arial,Helvetica,sans-serif; - color: #666; - padding: 3px; - margin-left: 20px; -} - -.radioDiv{ - background-color: #F5F5F5; - border-top: 1px solid white; - width: 100%; - padding: 0; - margin: 0; - height: 30px; - border-bottom-right-radius: 5px 5px; - border-bottom-left-radius: 5px 5px; -} - -.radioType{ - float: right; - margin: 2px; - padding: 3px; -} - -.popupWordInfo{ - position: absolute; - display: none; - width: 100px; - height: 20px; - top: 0; - left: 0; - text-align: center; - border: 1px solid #B9B9B9; - background-color: #eaebeb; - color: #666; - -webkit-border-radius: 5px; - border-radius: 5px; - -webkit-box-shadow: #dadada -1px 0 4px; - box-shadow: #dadada -1px 0 4px; - z-index: 100; -} -*/ \ No newline at end of file diff --git a/resources/library/interactive/BlackYellow.wgt/icon.png b/resources/library/interactive/BlackYellow.wgt/icon.png deleted file mode 100644 index 8c64a6a81ec0691e770df1bba7ff60bb9b26c70f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1053 zcmb7D{WIGK9R4I})XR`~f4S3i^t{YzP;#-ZQcV=|R-)Kyi$%O^N;uhY_Z`LJX0%pT zvC+sfSy!puAjx9u+QD+^E}Tz&kxTpA6b0taZ7U- za{#c6jNm31QLwwF6yu!%S()1z`9L*4aBw|Dsq-Ti|MClnH7v2&b zHii`O(R`i}5rIYny&jlMAP5i$puHW=oPmZ0U@(Bgf%SD*T!g_vV=@rYM5BTDcq6Yx zbVWRYNI~Qy-bAcJ{(|U%*pFC` zID_bkC`2qme1zD9n2AOm;+Jo18C;wYn`o5(f8bI>tUmx*AIUw+mp)i+oh@2o(0DnO zHW95E>mgTIQb{ag-kt2Ir&FdbCh9u}pN#pB^gLGGDEai?cdQ(~u-43NS(Q)qTFq#>ZRs0=4T|BPCv=?`Kxi4blXdMB;vC8F+)Zan zx;)1qTI%712icJN7*`aTzI(?PATj$^hV0Af0_XsrllRX(pfaaldkcLxYcwn1wV+`)u_clqq1#fn6-yc!cs0nkb9n+a$X+H^IgywRy zSXxu!$Z4*SQxl}{;)rzo4>(o9it7i?N4;$6TK;@i8R-y3OQ!3{DPWBKo+^1wkqp($LyXvS{!9mwV@wvj@ YtE6;Ny z@A)-#xU)-J6}JcWOB@Ode;8O|CZt=%(Sox4^~pERUj6eGZz6SYHk+EsN;6o5E&HBd z`u=T&rL_lJ@LSF5A$Q?zJO8Z0K8w+?8E+L`;!rxealO9g;*Z;Fq=r0uIbU*$x234; zzds{`ZgvjqC-O<|0q3AB{j>54xZ9RC@r>HV*2>-Ye#I_}smM4jBefjN5euKUe5)k1 z9}YX-(|o3xU!;e+NRRETrf*)@dNjHtR>s8*EKVNz=EYL^*S2HQoz8;N0rmRa)*rds cuU6WD0@}Xl&KE=6T;p>2o?O!u|Srw#Q)W-=~g($@^iH5Tk`d%-?cw2}%pE)tDgY(m6A=;N zpP!$vtE;O!S6NwUzIN@}`P$mrgvQ3k#MszaV|I47v8=2t9REWC0s=I&hSw_GZNMEV z?Oa7l5)%`3_wL=Z^z`&(&CJZSEiW(sgx{eUD=RCn=jZ49y1Tn`($dmQI-M?vH=tr& zUMCUDSx~Ll>jTo$(<7Rino?f8c=5fI?CH~|`x6rr`_l1e&z^k;4@E{tM;rY8{k5cv zb;{il3zquQj%_xZxxKwTcXf63Pf`d=58&Dzc;GE$*2I9jH)?8Xb`}>G4_NjMtiO)9 zM`$#fK+-9-TuQ3;^YaUWa`U4{kMf~pn-q0*b?t?QhOSEqr7)RH8$&}wdxG^?SB$Z9 zOs*D_3qJ+NLu)phBayK-So#+&Zfk9dC{2qg~Yk_!ptLoT*jt+6dFEw^dG z!otEnV(sGI3l}bI#KpxOiE&_H;CfC@&X$jlk8@0^RIW`=Pw$eh-rn9XpzA%12XUz> z1Y$odG9Zgn#>dCMCE@$`@9&6}qe*NC?kg`Z-xkKh!ooH{;7BS;KJl8oyu2+MpPiju zz1{w}CLyb< zNoa0vZqFSlTBVazh@U6&fq{WdnlCOceyCEZKE_y>3$eGiccQ^yxPx~0F9}LZ3CXc8 zCMEZ#q@=jS{OZ-KTheBN-t8zUG^R>$93j?Y@FLuOb8KvEi3AG^3tf~@mLC^Wal)a^ z?uyq?U*`km7rb8wK9agx2VyHul|r1e->~qmxFHC2NmfY{i4F;JwbV;!9FE%W?ChMz z`=@|QayiNgh())_!eTpW^Yw9cc^X`~a%GcS=0B+CMvU2rLtIV@Zs3s$h2qlLvuE$1 ztiBf9N(xR(N^KRFgMH5C35?waE=e1RoPAF1%nCQ=qnUh;Cht7_OG``tx8<3cnVYC{ z2Wekl-z$vSflo-cv}MZKbZX#cAQj{{aeMd@{d!6u9~l|h%E-vrl*V10Nd5i&&IAPM z&lrCQ+#sE-+vSjO9*cZ*S%AwRzl#!T#U*d*$&)9)3kt~^YJ<2EZ4m|s2e*Wh;U4gJ zb#*lz3a!9h(#1ND9E&a&0e}we4}mNqhlRB3LEJD`P-?$P?^psRCnx{FrQsE-V~8y! z(k#|>>_x!k>I2X&sBqU^t=73I)=?z|M zWnFHsJ}#F%7BsSpC>!&DQs6V-0kZ!qpaahx^bF5D;JH$ky~Jyctjq0X@5uF*T|;p> z&pRh&nLq(h1e7p}cr24;th^?ab)0y;m3~F2xXc1si3x~iORRj-#PhR-=S(ac$ZJ*Z zz9u|YSX>olJ*CvCC;6ZL(IPv{VJ(q^i{7NL_lLWK^ zRt;YdcDXPvTvGlrsf0Gd1pX~J<-($HQ~A%N9@+~Vho1-6UDy)-Ri2t8p<}Q`_#N=X z1uwi%URz2qp;$E>cwEw51-YT#(HaE<3N@^FWa<6{Ii{Y|ss*ize#5v&nr=177WIf$ zCa6-pFeE(&=rqU*^*1eFP^c(2Bs`wd^#_@yW@wNiXerFWS2{LJ7*@_1vycjC9jq0; z*Kt%rTDflAhdhIJz=q(b9hW7T^0)B>(gJ-COT%wC?n^kjcgstNKow^2-jNc5k`_a1 z5xiHV4IAF=Q;ve3(k_W-f)2&7VcNT8iiP{vpAZ#-Iz_9Y*Sk?lI_NrWpC}TPDx9Ix zyJpHz&^cO``H(_rF)RW9)UjW}tTJOPgH%BqU`hA^N0qRWGf)j_h4$x&r5#r#Y$=b7 zjgWzyffe|y;~xpf%5!51G67wM9l&2YUP-u7-Wdf+#h78yV~6e}h^JoAt_Agq-W;xZ zy7e5czqC_9rJ^y$;PIAjD##*rllD)LP*fPIJ?iPYf{as_XurNUWNYJp{;0Dp`R3#D oyTL?h>C4>@-#$exJ-g2v@=)^QLGsBqzQ!}?Z0~OS`Eu~{e}+Vj(EtDd diff --git a/resources/library/interactive/BlackYellow.wgt/index.html b/resources/library/interactive/BlackYellow.wgt/index.html deleted file mode 100644 index a77d4cfd..00000000 --- a/resources/library/interactive/BlackYellow.wgt/index.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/resources/library/interactive/BlackYellow.wgt/scripts/blackYellow.js b/resources/library/interactive/BlackYellow.wgt/scripts/blackYellow.js deleted file mode 100644 index 3ce21a15..00000000 --- a/resources/library/interactive/BlackYellow.wgt/scripts/blackYellow.js +++ /dev/null @@ -1,409 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - -function init(){ - - //variables - var toggleFlag = false; // detects toggling in toggle button - var endFlag = false; // ending of toggling in toggle button - var addToggleStart = false; // detects toggling in add button - var addToggleEnd = false; // ending of toggling in add button - var shadowOver = false; - var mode = false; - var popupFlag = false - var flagForSelect = false; - var dragElement = null; //the element that must be dragging - var lang = ""; //locale language - var coords = { - left:0, - top:0 - } - - var resizeObj = { - y:false, - x:false, - width:0, - height:0 - } - - if(window.sankore){ - try{ - lang = sankore.locale().substr(0,2); - sankoreLang[lang].edit; - } catch(e){ - lang = "en"; - } - } else - lang = "en"; - - var opacityChanged = false; - - if(window.sankore){ - if(sankore.preference("blackYellowData","")){ - var importArray = jQuery.parseJSON(sankore.preference("blackYellowData","")); - for(var i in importArray){ - var tmpReadyTask = $("
"); - var exprContainer = $("
" + importArray[i].data1 + "
").appendTo(tmpReadyTask); - var resContainer = $("
"+ importArray[i].data2 + "
").appendTo(tmpReadyTask); - tmpReadyTask.width(importArray[i].width) - .height(importArray[i].height) - .css("position","absolute") - .css("top",importArray[i].top) - .css("left",importArray[i].left); - tmpReadyTask.appendTo("body"); - } - } - $(document).disableTextSelect(); - } - - /* ------------- BUTTONS -------------*/ - - // toggle button - var buttonDiv = $("
").appendTo("body"); - var toggleButton = $("").appendTo("#buttonDiv"); - buttonDiv.css({ - top:"10px", - right:0 - }); - - //toggle mode - toggleButton.click(function(){ - if(!shadowOver){ - if(mode){ - mode = false; - addButtonDiv.css("display","none"); - $(".leftDiv, .rightDiv").animate({ - "opacity":"1" - },"slow",function(){ - if(opacityChanged){ - if($(".editContainer").size() != 0){ - $(".editContainer").each(function(index, domElem){ - var tmpReadyTask = $(domElem).find(".readyTask"); - tmpReadyTask.width($(domElem).width()) - .height($(domElem).height()) - .css("position","absolute") - .css("top",$(domElem).position().top) - .css("left",$(domElem).position().left) - .find(".taskContainer").removeAttr("contenteditable"); - - $(domElem).remove(); - tmpReadyTask.appendTo("body"); - }); - } - opacityChanged = false; - } - }); - $(document).disableTextSelect(); - } else { - mode = true; - addButtonDiv.css("display","block"); - $(document).enableTextSelect(); - $(".leftDiv, .rightDiv").animate({ - "opacity":"0.4" - },"slow",function(){ - if(!opacityChanged){ - if($(".readyTask").size() != 0){ - $(".readyTask").each(function(index, domElem){ - var editContent = $("
").width($(domElem).width() + 10).height($(domElem) + 10).appendTo("body"); - var closeItem = $("
").appendTo(editContent); - var rightResize = $("
").appendTo(editContent); - var bottomResize = $("
").appendTo(editContent); - editContent.css("top", $(domElem).position().top).css("left", $(domElem).position().left); - $(domElem).css("position","static") - .width("100%") - .height("100%") - .find(".taskContainer").attr("contenteditable", "true"); - $(domElem).appendTo(editContent); - }); - } - opacityChanged = true; - } - }); - - } - toggleButton.trigger("mouseout"); - } - }); - - // toggle button events - toggleButton.mouseover(function(){ - if(!shadowOver){ - if(!toggleFlag && !endFlag){ - endFlag = true; - toggleButton.animate({ - width:"115px" - },"fast",function(){ - toggleFlag = true; - if(!mode) - toggleButton.text(sankoreLang[lang].edit); - else - toggleButton.text(sankoreLang[lang].display); - }); - } - } - }); - - toggleButton.mouseout(function(){ - if(!shadowOver){ - if(toggleFlag && endFlag){ - endFlag = false; - toggleButton.animate({ - width:"20px" - },"fast", function(){ - toggleButton.text("<"); - toggleFlag = false; - }); - } - } - }); - - //add button - var addButtonDiv = $("
").appendTo("body"); - var addButton = $("").appendTo("#addButtonDiv"); - addButtonDiv.css({ - top:"47px", - right:0 - }); - - // add button events - addButton.click(function(){ - shadowDiv.show("fast", function(){ - shadowOver = true; - popupBack.show("slow"); - }); - $(document).disableTextSelect(); - addButton.trigger("mouseout"); - }); - - addButton.mouseover(function(){ - if(!shadowOver){ - if(!addToggleStart && !addToggleEnd){ - addToggleEnd = true; - addButton.animate({ - width:"115px" - },"fast",function(){ - addToggleStart = true; - addButton.text(sankoreLang[lang].add); - }); - } - } - }); - - addButton.mouseout(function(){ - if(!shadowOver){ - if(addToggleStart && addToggleEnd){ - addToggleEnd = false; - addButton.animate({ - width:"20px" - },"fast", function(){ - addButton.text("+"); - addToggleStart = false; - }); - } - } - }); - - /* -------------- END OF WORK WITH BUTTONS ---------------*/ - - //basic divs - var leftDiv = $("
").appendTo("body"); - var rightDiv = $("
").appendTo("body"); - - //divs for adding a new item - var shadowDiv = $("
").appendTo("body"); - var popupBack = $("
").appendTo("body"); - - //input fields and buttons for a popup window - var expressionDiv = $("
").appendTo(popupBack); - var experssionLabel = $("" + sankoreLang[lang].enter_data + "").appendTo(expressionDiv); - var expresionText = $("").appendTo(expressionDiv); - - var resultDiv = $("
").appendTo(popupBack); - var resultLabel = $("" + sankoreLang[lang].enter_result + "").appendTo(resultDiv); - var resultText = $("").appendTo(resultDiv); - - var popupButtonsDiv= $("
").appendTo(popupBack); - var cancelButton = $("").appendTo(popupButtonsDiv); - var okButton = $("").appendTo(popupButtonsDiv); - - /* -------------- A WORK WITH POPUP BUTTONS AND FIELDS ---------------*/ - - $("#resultText, #expresionText").keyup(function(){ - if($(this).val()){ - $(this).css("background-color", "#ff9"); - } - }); - - cancelButton.click(function(){ - $(document).enableTextSelect(); - popupBack.hide("slow", function(){ - $("#resultText, #expresionText").val("") - .css("background-color", "#ffc"); - shadowDiv.hide("fast"); - shadowOver = false; - }); - }); - - okButton.click(function(){ - $(document).enableTextSelect(); - if(checkEmptyFields(expresionText) && checkEmptyFields(resultText)){ - popupBack.hide("slow", function(){ - shadowDiv.hide("fast"); - shadowOver = false; - addTask(expresionText.val(), resultText.val()); - $("#resultText, #expresionText").val("") - .css("background-color", "#ffc"); - }) - } - }); - - /* -------------- THE END OF WORK WITH POPUP BUTTONS AND FIELDS ---------------*/ - - // a work with dragging possibility - $("input:text").mouseover(function(){ - $(document).enableTextSelect(); - }); - - $("input:text").mouseout(function(){ - $(document).disableTextSelect(); - }); - - $(".readyTask, .editContainer").live("mousedown",function(event){ - if(!shadowOver){ - dragElement = $(this); - coords.left = event.pageX - $(this).position().left; - coords.top = event.pageY - $(this).position().top; - resizeObj.width = $(this).width(); - resizeObj.height = $(this).height(); - } - }); - - $(".rightResize").live("mousedown",function(event){ - if(!shadowOver){ - resizeObj.x = true; - } - }); - - $(".bottomResize").live("mousedown",function(event){ - if(!shadowOver){ - resizeObj.y = true; - } - }); - - $("body").mouseup(function(event){ - if(!shadowOver){ - dragElement = null; - resizeObj.x = false; - resizeObj.y = false; - } - }); - - $("body").mousemove(function(event){ - if(dragElement && !shadowOver){ - if(resizeObj.x) - dragElement.width(event.pageX - dragElement.position().left); - else if(resizeObj.y) - dragElement.height(event.pageY - dragElement.position().top); - else - dragElement.css("top",event.pageY - coords.top).css("left", event.pageX - coords.left); - } - }); - - //closing item - $(".closeItem").live("click", function(){ - if(!shadowOver){ - $(this).parent().remove(); - } - }); - - $("#leftDiv,#rightDiv,#shadowDiv").css("height", $(window).height()); - popupBack.css("top", ($(window).height() - 138)*50/$(window).height() + "%"); - popupBack.css("left", ($(window).width() - 360)*50/$(window).width() + "%"); - - $(window).resize(function(){ - $("#leftDiv,#rightDiv,#shadowDiv").css("height", $(window).height()); - popupBack.css("top", ($(window).height() - 138)*50/$(window).height() + "%"); - popupBack.css("left", ($(window).width() - 360)*50/$(window).width() + "%"); - }); - - $("html").mouseout(function(){ - if(window.sankore) - exportToSankore(); - }); - - // export data - function exportToSankore(){ - - var objToExport = { - data1:"", - data2:"", - width:0, - height:0, - top:0, - left:0 - } - var arrayToExport = new Array(); - if(mode){ - if($(".editContainer").size() != 0){ - $(".editContainer").each(function(index, domElem){ - objToExport.data1 = $(domElem).find(".readyTask").find(":first-child").text(); - objToExport.data2 = $(domElem).find(".readyTask").find(":last-child").text(); - objToExport.width = $(domElem).width(); - objToExport.height = $(domElem).height(); - objToExport.top = $(domElem).position().top; - objToExport.left = $(domElem).position().left; - arrayToExport.push(objToExport); - }); - } - } else { - if($(".readyTask").size() != 0){ - $(".readyTask").each(function(index, domElem){ - objToExport.data1 = $(domElem).find(":first-child").text(); - objToExport.data2 = $(domElem).find(":last-child").text(); - objToExport.width = $(domElem).width(); - objToExport.height = $(domElem).height(); - objToExport.top = $(domElem).position().top; - objToExport.left = $(domElem).position().left; - arrayToExport.push(objToExport); - }); - } - } - sankore.setPreference("blackYellowData", JSON.stringify(arrayToExport)); - } -} - -//checking empty fields -function checkEmptyFields(field){ - if(field.val() == ""){ - field.css("background-color", "red"); - return false; - } else { - field.css("background-color", "#ff9"); - return true; - } -} - -//adding a new task to the page -function addTask(expression, result){ - var editContent = $("
").width(240).height(70).appendTo("body"); - var closeItem = $("
").appendTo(editContent); - var rightResize = $("
").appendTo(editContent); - var bottomResize = $("
").appendTo(editContent); - var main = $("
"); - var exprContainer = $("
" + expression + "
").appendTo(main); - var resContainer = $("
"+ result + "
").appendTo(main); - main.appendTo(editContent); -} \ No newline at end of file diff --git a/resources/library/interactive/BlackYellow.wgt/scripts/jquery.disable.text.select.js b/resources/library/interactive/BlackYellow.wgt/scripts/jquery.disable.text.select.js deleted file mode 100644 index 2e06f673..00000000 --- a/resources/library/interactive/BlackYellow.wgt/scripts/jquery.disable.text.select.js +++ /dev/null @@ -1,62 +0,0 @@ -/** - * .disableTextSelect - Disable Text Select Plugin - * - * Version: 1.1 - * Updated: 2007-11-28 - * - * Used to stop users from selecting text - * - * Copyright (c) 2007 James Dempster (letssurf@gmail.com, http://www.jdempster.com/category/jquery/disabletextselect/) - * - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - **/ - -/** - * Requirements: - * - jQuery (John Resig, http://www.jquery.com/) - **/ -(function($) { - if ($.browser.mozilla) { - $.fn.disableTextSelect = function() { - return this.each(function() { - $(this).css({ - 'MozUserSelect' : 'none' - }); - }); - }; - $.fn.enableTextSelect = function() { - return this.each(function() { - $(this).css({ - 'MozUserSelect' : '' - }); - }); - }; - } else if ($.browser.msie) { - $.fn.disableTextSelect = function() { - return this.each(function() { - $(this).bind('selectstart.disableTextSelect', function() { - return false; - }); - }); - }; - $.fn.enableTextSelect = function() { - return this.each(function() { - $(this).unbind('selectstart.disableTextSelect'); - }); - }; - } else { - $.fn.disableTextSelect = function() { - return this.each(function() { - $(this).bind('mousedown.disableTextSelect', function() { - return false; - }); - }); - }; - $.fn.enableTextSelect = function() { - return this.each(function() { - $(this).unbind('mousedown.disableTextSelect'); - }); - }; - } -})(jQuery); \ No newline at end of file diff --git a/resources/library/interactive/BlackYellow.wgt/scripts/languages.js b/resources/library/interactive/BlackYellow.wgt/scripts/languages.js deleted file mode 100644 index fceb7e64..00000000 --- a/resources/library/interactive/BlackYellow.wgt/scripts/languages.js +++ /dev/null @@ -1,30 +0,0 @@ -var sankoreLang = { - "en":{ - "edit": "Edit", - "display":"Display", - "add":"Add", - "enter_data":"Enter data:", - "enter_result":"Enter result:", - "ok":"Ok", - "cancel":"Cancel" - }, - "ru":{ - "edit": "Изменить", - "display":"Показать", - "add":"Добавить", - "enter_data":"Введите вопрос:", - "enter_result":"Введите ответ:", - "ok":"Ок", - "cancel":"Отмена" - }, - "fr":{ - "edit": "Modifier", - "display":"Afficher", - "add":"Ajouter", - "enter_data":"Entrer les données:", - "enter_result":"Entrez le résultat:", - "ok":"Ok", - "cancel":"Annuler" - } -}; - diff --git a/resources/library/interactive/Choisir.wgt/images/greySquare.png b/resources/library/interactive/Choisir.wgt/images/greySquare.png deleted file mode 100644 index 24e59ff19181272decfee28cbeea4401f68d2b30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 451 zcmeAS@N?(olHy`uVBq!ia0vp^6+kS*!2~2#li!>KQfwtbe!&d?LC`!xx)vzHS>O>_ z%)r2(2*Qjj?3ZUUFfb;2x;TbZ%z1ljZ{8sTfde0{tvLfHwT5SG+Z4F+179Qi0)01m z741;T1woNFxKp)_pC0b?sF77#)#tIK{mQ-kO;3*gIz5S9UTC7>vs5eJ%U^1@=9ttl zI503Qxa>5ixvqq{!RGWM3%^PKYL^SUDxOPQ@4xus=ZZB`v&?2!&Qtcf=Pfw#dFAc5 z-y&pgzum3!^5r6nx;59MG_RMg-5Ru0tRrJ>s8{8>?>ldvd0w2p|8}VKq#b1|1Q<_m zvXS}L_vNo`Mb%@0fY|RE|Jz&AlornP$WRlS)kz%F!sV(2(~0MaZ#h={GE-3yZCUtu zmrKgpz26T0liHNB_G%QnE>R7Z%<4IQhI;jPQ$5JZGZfEhb@kjKw z_%54l;v0T?>HFUt458Ud6J9+3ea_W|A#&Q?BZcelzc1UBC{f4A>fW9hw(N2NFb)_z MUHx3vIVCg!03ZOun*aa+ diff --git a/resources/library/interactive/Choisir.wgt/scripts/jquery-1.6.2.min.js b/resources/library/interactive/Choisir.wgt/scripts/jquery-1.6.2.min.js deleted file mode 100644 index 48590ecb..00000000 --- a/resources/library/interactive/Choisir.wgt/scripts/jquery-1.6.2.min.js +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * jQuery JavaScript Library v1.6.2 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Thu Jun 30 14:16:56 2011 -0400 - */ -(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"":"")+""),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(a);return this},eq:function(a){return 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(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.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=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i. -shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(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){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j -)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=_.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bo.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/)<[^<]*)*<\/script>/gi,bM=/^(?:select|textarea)/i,bN=/\s+/,bO=/([?&])_=[^&]*/,bP=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bQ=f.fn.load,bR={},bS={},bT,bU;try{bT=e.href}catch(bV){bT=c.createElement("a"),bT.href="",bT=bT.href}bU=bP.exec(bT.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bQ)return bQ.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bL,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bM.test(this.nodeName)||bG.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bD,"\r\n")}}):{name:b.name,value:c.replace(bD,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bT,isLocal:bH.test(bU[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bW(bR),ajaxTransport:bW(bS),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?bZ(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b$(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bE,"").replace(bJ,bU[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bN),d.crossDomain==null&&(r=bP.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bU[1]&&r[2]==bU[2]&&(r[3]||(r[1]==="http:"?80:443))==(bU[3]||(bU[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bX(bR,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bI.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bK.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bO,"$1_="+x);d.url=y+(y===d.url?(bK.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bX(bS,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bB,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn,co=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cr("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cu.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cu.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cv(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cv(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/blackYellow.js b/resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/blackYellow.js index 4ab6ae73..3ce21a15 100644 --- a/resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/blackYellow.js +++ b/resources/library/sankoreInteractivities/BlackYellow.wgt/scripts/blackYellow.js @@ -346,19 +346,19 @@ function init(){ // export data function exportToSankore(){ - + + var objToExport = { + data1:"", + data2:"", + width:0, + height:0, + top:0, + left:0 + } var arrayToExport = new Array(); if(mode){ if($(".editContainer").size() != 0){ - $(".editContainer").each(function(index, domElem){ - var objToExport = { - data1:"", - data2:"", - width:0, - height:0, - top:0, - left:0 - } + $(".editContainer").each(function(index, domElem){ objToExport.data1 = $(domElem).find(".readyTask").find(":first-child").text(); objToExport.data2 = $(domElem).find(".readyTask").find(":last-child").text(); objToExport.width = $(domElem).width(); @@ -371,14 +371,6 @@ function init(){ } else { if($(".readyTask").size() != 0){ $(".readyTask").each(function(index, domElem){ - var objToExport = { - data1:"", - data2:"", - width:0, - height:0, - top:0, - left:0 - } objToExport.data1 = $(domElem).find(":first-child").text(); objToExport.data2 = $(domElem).find(":last-child").text(); objToExport.width = $(domElem).width(); diff --git a/resources/library/interactive/Choisir.wgt/config.xml b/resources/library/sankoreInteractivities/Choisir.wgt/config.xml similarity index 100% rename from resources/library/interactive/Choisir.wgt/config.xml rename to resources/library/sankoreInteractivities/Choisir.wgt/config.xml diff --git a/resources/library/interactive/Choisir.wgt/css/basic.css b/resources/library/sankoreInteractivities/Choisir.wgt/css/basic.css similarity index 100% rename from resources/library/interactive/Choisir.wgt/css/basic.css rename to resources/library/sankoreInteractivities/Choisir.wgt/css/basic.css diff --git a/resources/library/interactive/Choisir.wgt/icon.png b/resources/library/sankoreInteractivities/Choisir.wgt/icon.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/icon.png rename to resources/library/sankoreInteractivities/Choisir.wgt/icon.png diff --git a/resources/library/interactive/Choisir.wgt/images/1thOption.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/1thOption.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/1thOption.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/1thOption.png diff --git a/resources/library/interactive/Choisir.wgt/images/2thOption.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/2thOption.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/2thOption.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/2thOption.png diff --git a/resources/library/interactive/Choisir.wgt/images/3thOption.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/3thOption.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/3thOption.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/3thOption.png diff --git a/resources/library/interactive/Choisir.wgt/images/addSomething.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/addSomething.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/addSomething.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/addSomething.png diff --git a/resources/library/interactive/Choisir.wgt/images/bigBlackClose.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/bigBlackClose.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/bigBlackClose.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/bigBlackClose.png diff --git a/resources/library/interactive/Choisir.wgt/images/blueClose.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/blueClose.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/blueClose.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/blueClose.png diff --git a/resources/library/interactive/Choisir.wgt/images/boldBlackClose.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/boldBlackClose.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/boldBlackClose.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/boldBlackClose.png diff --git a/resources/library/interactive/Choisir.wgt/images/boldClose.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/boldClose.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/boldClose.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/boldClose.png diff --git a/resources/library/interactive/Choisir.wgt/images/boldGreyClose.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/boldGreyClose.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/boldGreyClose.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/boldGreyClose.png diff --git a/resources/library/interactive/Choisir.wgt/images/bottomLeftThing.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/bottomLeftThing.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/bottomLeftThing.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/bottomLeftThing.png diff --git a/resources/library/interactive/Choisir.wgt/images/complete.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/complete.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/complete.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/complete.png diff --git a/resources/library/interactive/Choisir.wgt/images/grayClose.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/grayClose.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/grayClose.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/grayClose.png diff --git a/resources/library/interactive/BlackYellow.wgt/images/greySquare.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/greySquare.png similarity index 100% rename from resources/library/interactive/BlackYellow.wgt/images/greySquare.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/greySquare.png diff --git a/resources/library/interactive/Choisir.wgt/images/greySquareArrow.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/greySquareArrow.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/greySquareArrow.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/greySquareArrow.png diff --git a/resources/library/interactive/Choisir.wgt/images/horSep.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/horSep.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/horSep.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/horSep.png diff --git a/resources/library/interactive/Choisir.wgt/images/leftThing.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/leftThing.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/leftThing.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/leftThing.png diff --git a/resources/library/interactive/Choisir.wgt/images/lessBottomBorder.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/lessBottomBorder.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/lessBottomBorder.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/lessBottomBorder.png diff --git a/resources/library/interactive/Choisir.wgt/images/lessTopBorder.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/lessTopBorder.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/lessTopBorder.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/lessTopBorder.png diff --git a/resources/library/interactive/Choisir.wgt/images/lowerBack.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/lowerBack.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/lowerBack.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/lowerBack.png diff --git a/resources/library/interactive/Choisir.wgt/images/lowerBorder.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/lowerBorder.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/lowerBorder.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/lowerBorder.png diff --git a/resources/library/interactive/Choisir.wgt/images/lowerBorder2.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/lowerBorder2.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/lowerBorder2.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/lowerBorder2.png diff --git a/resources/library/interactive/Choisir.wgt/images/niceBack.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/niceBack.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/niceBack.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/niceBack.png diff --git a/resources/library/interactive/Choisir.wgt/images/niceBack2.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/niceBack2.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/niceBack2.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/niceBack2.png diff --git a/resources/library/interactive/Choisir.wgt/images/niceBack3.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/niceBack3.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/niceBack3.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/niceBack3.png diff --git a/resources/library/interactive/Choisir.wgt/images/pencil.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/pencil.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/pencil.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/pencil.png diff --git a/resources/library/interactive/Choisir.wgt/images/point.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/point.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/point.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/point.png diff --git a/resources/library/interactive/Choisir.wgt/images/redBoldClose.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/redBoldClose.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/redBoldClose.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/redBoldClose.png diff --git a/resources/library/interactive/Choisir.wgt/images/reload.jpg b/resources/library/sankoreInteractivities/Choisir.wgt/images/reload.jpg similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/reload.jpg rename to resources/library/sankoreInteractivities/Choisir.wgt/images/reload.jpg diff --git a/resources/library/interactive/Choisir.wgt/images/reload2.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/reload2.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/reload2.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/reload2.png diff --git a/resources/library/interactive/Choisir.wgt/images/rightThing.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/rightThing.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/rightThing.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/rightThing.png diff --git a/resources/library/interactive/Choisir.wgt/images/separator.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/separator.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/separator.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/separator.png diff --git a/resources/library/interactive/Choisir.wgt/images/separator2.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/separator2.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/separator2.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/separator2.png diff --git a/resources/library/interactive/Choisir.wgt/images/settings.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/settings.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/settings.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/settings.png diff --git a/resources/library/interactive/Choisir.wgt/images/sidePoints.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/sidePoints.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/sidePoints.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/sidePoints.png diff --git a/resources/library/interactive/Choisir.wgt/images/spanner.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/spanner.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/spanner.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/spanner.png diff --git a/resources/library/interactive/Choisir.wgt/images/star.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/star.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/star.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/star.png diff --git a/resources/library/interactive/Choisir.wgt/images/stop.jpg b/resources/library/sankoreInteractivities/Choisir.wgt/images/stop.jpg similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/stop.jpg rename to resources/library/sankoreInteractivities/Choisir.wgt/images/stop.jpg diff --git a/resources/library/interactive/Choisir.wgt/images/tool.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/tool.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/tool.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/tool.png diff --git a/resources/library/interactive/Choisir.wgt/images/topLeftThing.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/topLeftThing.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/topLeftThing.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/topLeftThing.png diff --git a/resources/library/interactive/Choisir.wgt/images/transparentBack.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/transparentBack.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/transparentBack.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/transparentBack.png diff --git a/resources/library/interactive/Choisir.wgt/images/upperBorder.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/upperBorder.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/upperBorder.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/upperBorder.png diff --git a/resources/library/interactive/Choisir.wgt/images/upperBorder2.png b/resources/library/sankoreInteractivities/Choisir.wgt/images/upperBorder2.png similarity index 100% rename from resources/library/interactive/Choisir.wgt/images/upperBorder2.png rename to resources/library/sankoreInteractivities/Choisir.wgt/images/upperBorder2.png diff --git a/resources/library/interactive/Choisir.wgt/index.html b/resources/library/sankoreInteractivities/Choisir.wgt/index.html similarity index 100% rename from resources/library/interactive/Choisir.wgt/index.html rename to resources/library/sankoreInteractivities/Choisir.wgt/index.html diff --git a/resources/library/interactive/BlackYellow.wgt/scripts/jquery-1.6.2.min.js b/resources/library/sankoreInteractivities/Choisir.wgt/scripts/jquery-1.6.2.min.js similarity index 100% rename from resources/library/interactive/BlackYellow.wgt/scripts/jquery-1.6.2.min.js rename to resources/library/sankoreInteractivities/Choisir.wgt/scripts/jquery-1.6.2.min.js diff --git a/resources/library/interactive/Choisir.wgt/scripts/languages.js b/resources/library/sankoreInteractivities/Choisir.wgt/scripts/languages.js similarity index 100% rename from resources/library/interactive/Choisir.wgt/scripts/languages.js rename to resources/library/sankoreInteractivities/Choisir.wgt/scripts/languages.js diff --git a/resources/library/interactive/Choisir.wgt/scripts/selQuestionApp.js b/resources/library/sankoreInteractivities/Choisir.wgt/scripts/selQuestionApp.js similarity index 100% rename from resources/library/interactive/Choisir.wgt/scripts/selQuestionApp.js rename to resources/library/sankoreInteractivities/Choisir.wgt/scripts/selQuestionApp.js From 2def311e936337468e2f4a9ee093b38f2c57685a Mon Sep 17 00:00:00 2001 From: Ivan Ilin Date: Fri, 16 Dec 2011 17:52:31 +0200 Subject: [PATCH 16/33] Sankore 431 fixed --- src/adaptors/UBCFFSubsetAdaptor.cpp | 1 - src/gui/UBDocumentTreeWidget.cpp | 13 ++++++++++++- src/gui/UBDocumentTreeWidget.h | 2 +- src/gui/UBThumbnailView.h | 2 +- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/adaptors/UBCFFSubsetAdaptor.cpp b/src/adaptors/UBCFFSubsetAdaptor.cpp index aeb0a2a8..877a93a0 100644 --- a/src/adaptors/UBCFFSubsetAdaptor.cpp +++ b/src/adaptors/UBCFFSubsetAdaptor.cpp @@ -1039,7 +1039,6 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::persistScenes() UBThumbnailAdaptor::persistScene(mProxy->persistencePath(), tmpScene, i); delete tmpScene; - mCurrentScene->setModified(false); } diff --git a/src/gui/UBDocumentTreeWidget.cpp b/src/gui/UBDocumentTreeWidget.cpp index 7f06d5d2..b344855c 100644 --- a/src/gui/UBDocumentTreeWidget.cpp +++ b/src/gui/UBDocumentTreeWidget.cpp @@ -25,6 +25,10 @@ #include "core/UBDocumentManager.h" #include "document/UBDocumentController.h" +#include "adaptors/UBThumbnailAdaptor.h" +#include "adaptors/UBSvgSubsetAdaptor.h" +#include "frameworks/UBFileSystemUtils.h" + #include "core/memcheck.h" UBDocumentTreeWidget::UBDocumentTreeWidget(QWidget * parent) @@ -290,7 +294,14 @@ void UBDocumentTreeWidget::dropEvent(QDropEvent *event) } UBPersistenceManager::persistenceManager()->insertDocumentSceneAt(targetDocProxy, sceneClone, targetDocProxy->pageCount()); - } + + //due to incorrect generation of thumbnails of invisible scene I've used direct copying of thumbnail files + //it's not universal and good way but it's faster + QString from = sourceItem.documentProxy()->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", sourceItem.sceneIndex() + 1); + QString to = targetDocProxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", targetDocProxy->pageCount()); + QFile::remove(to); + QFile::copy(from, to); + } } QApplication::restoreOverrideCursor(); diff --git a/src/gui/UBDocumentTreeWidget.h b/src/gui/UBDocumentTreeWidget.h index ab2e9866..f76d1696 100644 --- a/src/gui/UBDocumentTreeWidget.h +++ b/src/gui/UBDocumentTreeWidget.h @@ -23,7 +23,7 @@ class UBDocumentProxyTreeItem; class UBDocumentTreeWidget : public QTreeWidget { - Q_OBJECT; + Q_OBJECT public: UBDocumentTreeWidget(QWidget *parent = 0); diff --git a/src/gui/UBThumbnailView.h b/src/gui/UBThumbnailView.h index ecd13a19..32390f1a 100644 --- a/src/gui/UBThumbnailView.h +++ b/src/gui/UBThumbnailView.h @@ -22,7 +22,7 @@ class UBGraphicsScene; class UBThumbnailView : public QGraphicsView { - Q_OBJECT; + Q_OBJECT public: UBThumbnailView(); From 4d20f15de93981cc99b2c54931476bc735e68b18 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Fri, 16 Dec 2011 16:08:30 +0100 Subject: [PATCH 17/33] fixed code to hadle mime type like 'images/png;......' --- src/board/UBBoardController.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index d18b53ac..2ca0fe6d 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -777,6 +777,12 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString { QString mimeType = pContentTypeHeader; + // In some cases "image/jpeg;charset=" is retourned by the drag-n-drop. That is + // why we will check if an ; exists and take the first part (the standard allows this kind of mimetype) + int position=mimeType.indexOf(";"); + if(position != -1) + mimeType=mimeType.left(position); + if (!pSuccess) { UBApplication::showMessage(tr("Downloading content %1 failed").arg(sourceUrl.toString())); From fb56485c07c7e1d87036cb6e66853051bba98547 Mon Sep 17 00:00:00 2001 From: Anatoly Mihalchenko Date: Fri, 16 Dec 2011 18:16:46 +0300 Subject: [PATCH 18/33] Sankore 378 --- src/tools/UBAbstractDrawRuler.cpp | 8 ++++++-- src/tools/UBAbstractDrawRuler.h | 15 +++++++-------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/tools/UBAbstractDrawRuler.cpp b/src/tools/UBAbstractDrawRuler.cpp index 3c8b8169..e69aa815 100644 --- a/src/tools/UBAbstractDrawRuler.cpp +++ b/src/tools/UBAbstractDrawRuler.cpp @@ -35,7 +35,6 @@ const QColor UBAbstractDrawRuler::sDarkBackgroundDrawColor = QColor(0xff, 0xff, const int UBAbstractDrawRuler::sLeftEdgeMargin = 10; const int UBAbstractDrawRuler::sDegreeToQtAngleUnit = 16; const int UBAbstractDrawRuler::sRotationRadius = 15; -const int UBAbstractDrawRuler::sPixelsPerMillimeter = 5; const int UBAbstractDrawRuler::sFillTransparency = 127; const int UBAbstractDrawRuler::sDrawTransparency = 192; const int UBAbstractDrawRuler::sRoundingRadius = sLeftEdgeMargin / 2; @@ -44,7 +43,12 @@ const int UBAbstractDrawRuler::sRoundingRadius = sLeftEdgeMargin / 2; UBAbstractDrawRuler::UBAbstractDrawRuler() : mShowButtons(false) , mAntiScaleRatio(1.0) -{} +{ + //we actually need to evaluate pixels per millimeter + QDesktopWidget* desktop = UBApplication::desktop(); + int dpiCommon = (desktop->physicalDpiX() + desktop->physicalDpiY()) / 2; + sPixelsPerMillimeter = qRound(dpiCommon / 25.4f);//because 1inch = 25.4 mm +} void UBAbstractDrawRuler::create(QGraphicsItem& item) { diff --git a/src/tools/UBAbstractDrawRuler.h b/src/tools/UBAbstractDrawRuler.h index cf98e2f5..0e632eff 100644 --- a/src/tools/UBAbstractDrawRuler.h +++ b/src/tools/UBAbstractDrawRuler.h @@ -70,14 +70,13 @@ protected: static const QColor sDarkBackgroundMiddleFillColor; static const QColor sDarkBackgroundDrawColor; - static const int sLeftEdgeMargin; - static const int sDegreeToQtAngleUnit; - static const int sRotationRadius; - static const int sPixelsPerMillimeter; - static const int sFillTransparency; - static const int sDrawTransparency; - static const int sRoundingRadius; - + static const int sLeftEdgeMargin; + static const int sDegreeToQtAngleUnit; + static const int sRotationRadius; + static const int sFillTransparency; + static const int sDrawTransparency; + static const int sRoundingRadius; + int sPixelsPerMillimeter; }; #endif From 4e75d6d28c4d8baa51df7082e61633cf8ff762b7 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Mon, 19 Dec 2011 09:27:24 +0100 Subject: [PATCH 19/33] increased version --- Sankore_3.1.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sankore_3.1.pro b/Sankore_3.1.pro index a295e6fc..08702f67 100644 --- a/Sankore_3.1.pro +++ b/Sankore_3.1.pro @@ -9,7 +9,7 @@ CONFIG += debug_and_release \ VERSION_MAJ = 1 VERSION_MIN = 40 VERSION_TYPE = b # a = alpha, b = beta, r = release, other => error -VERSION_PATCH = 00 +VERSION_PATCH = 01 VERSION = "$${VERSION_MAJ}.$${VERSION_MIN}.$${VERSION_TYPE}.$${VERSION_PATCH}" VERSION = $$replace(VERSION, "\\.r", "") From 45ec8db85e02c40d68ef4e3b146917d2115fe825 Mon Sep 17 00:00:00 2001 From: Ivan Ilin Date: Mon, 19 Dec 2011 19:14:25 +0200 Subject: [PATCH 20/33] Sankore 427 --- src/core/UBApplicationController.cpp | 6 ++++-- src/web/UBWebController.cpp | 4 +++- src/web/browser/WBBrowserWindow.cpp | 10 ++++------ src/web/browser/WBTabWidget.cpp | 1 - src/web/browser/WBTabWidget.h | 8 +++++--- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/core/UBApplicationController.cpp b/src/core/UBApplicationController.cpp index efece366..6550c56a 100644 --- a/src/core/UBApplicationController.cpp +++ b/src/core/UBApplicationController.cpp @@ -368,7 +368,7 @@ void UBApplicationController::showInternet() if (UBSettings::settings()->webUseExternalBrowser->get().toBool()) { showDesktop(true); - UBApplication::webController->show(UBWebController::WebBrowser); + UBApplication::webController->show(UBWebController::WebBrowser); // really no have emit mainModeChanged here ? potential problem with virtual keyboard ? } else @@ -460,6 +460,7 @@ void UBApplicationController::showTutorial() UBApplication::boardController->hide(); } + // it's needed not to duplicate webbrowser search in web mode. If I've breaked smbd's code let Ivan know UBApplication::webController->show(UBWebController::Tutorial); mMainWindow->webToolBar->hide(); @@ -488,7 +489,8 @@ void UBApplicationController::showSankoreEditor() UBApplication::boardController->hide(); } - UBApplication::webController->show(UBWebController::Paraschool); +// it's needed not to duplicate webbrowser search in web mode. If I've breaked smbd's code let Ivan know + UBApplication::webController->show(UBWebController::Paraschool); mMainWindow->webToolBar->hide(); mMainWindow->boardToolBar->hide(); diff --git a/src/web/UBWebController.cpp b/src/web/UBWebController.cpp index 08c5e8ab..436397b3 100644 --- a/src/web/UBWebController.cpp +++ b/src/web/UBWebController.cpp @@ -148,6 +148,8 @@ void UBWebController::webBrowserInstance() (*mCurrentWebBrowser)->tabWidget()->tabBar()->show(); (*mCurrentWebBrowser)->tabWidget()->lineEdits()->show(); +// (*mCurrentWebBrowser)->tabWidget()->tabBar()->hide(); +// (*mCurrentWebBrowser)->tabWidget()->lineEdits()->hide(); } UBApplication::applicationController->setMirrorSourceWidget((*mCurrentWebBrowser)->paintWidget()); @@ -192,7 +194,7 @@ void UBWebController::tutorialWebInstance() else { mCurrentWebBrowser = &mWebBrowserList[Tutorial]; - mToolsCurrentPalette = &mToolsPaletteList[Tutorial]; +// mToolsCurrentPalette = &mToolsPaletteList[Tutorial]; // mKeyboardCurrentPalette = &mKeyboardPaletteList[Tutorial]; mToolsPalettePositionned = &mToolsPalettePositionnedList[Tutorial]; if (!(*mCurrentWebBrowser)) diff --git a/src/web/browser/WBBrowserWindow.cpp b/src/web/browser/WBBrowserWindow.cpp index f87178e9..14f96f09 100644 --- a/src/web/browser/WBBrowserWindow.cpp +++ b/src/web/browser/WBBrowserWindow.cpp @@ -97,11 +97,11 @@ WBBrowserWindow::WBBrowserWindow(QWidget *parent, Ui::MainWindow* uniboardMainWi defaultSettings->setAttribute(QWebSettings::PluginsEnabled, true); setupMenu(); -// if(!isViewerWebInstance) + if(!isViewerWebInstance) setupToolBar(); -// else{ -// setupToolBarForTutorial(); -// } + else{ + setupToolBarForTutorial(); + } QVBoxLayout *layout = new QVBoxLayout; layout->setSpacing(0); @@ -205,8 +205,6 @@ void WBBrowserWindow::setupToolBar() connect(mSearchToolBar, SIGNAL(search(const QUrl&)), SLOT(loadUrl(const QUrl&))); mChaseWidget = new WBChaseWidget(this); - mWebToolBar->insertWidget(mUniboardMainWindow->actionWebBigger, mChaseWidget); - mWebToolBar->insertSeparator(mUniboardMainWindow->actionWebBigger); connect(mUniboardMainWindow->actionHome, SIGNAL(triggered()), this , SLOT(slotHome())); diff --git a/src/web/browser/WBTabWidget.cpp b/src/web/browser/WBTabWidget.cpp index 70b3b1d2..2d610a1f 100644 --- a/src/web/browser/WBTabWidget.cpp +++ b/src/web/browser/WBTabWidget.cpp @@ -251,7 +251,6 @@ WBTabWidget::WBTabWidget(QWidget *parent) mLineEdits->setMinimumWidth(200); QSizePolicy spolicy = mLineEdits->sizePolicy(); mLineEdits->setSizePolicy(QSizePolicy::Maximum, spolicy.verticalPolicy()); - } void WBTabWidget::clear() diff --git a/src/web/browser/WBTabWidget.h b/src/web/browser/WBTabWidget.h index ccc90517..4e7874b2 100644 --- a/src/web/browser/WBTabWidget.h +++ b/src/web/browser/WBTabWidget.h @@ -138,7 +138,7 @@ class WBWebActionMapper : public QObject */ class WBTabWidget : public QTabWidget { - Q_OBJECT; + Q_OBJECT signals: // tab widget signals @@ -171,8 +171,10 @@ class WBTabWidget : public QTabWidget QByteArray saveState() const; bool restoreState(const QByteArray &state); - WBTabBar* tabBar() { return mTabBar; }; - QStackedWidget* lineEdits() { return mLineEdits; }; + WBTabBar* tabBar() { return mTabBar; } + QStackedWidget* lineEdits() { return mLineEdits; } + + void setLineEditStackVisible(bool visible) {mLineEdits->setVisible(visible);mLineEdits->hide();} protected: void mouseDoubleClickEvent(QMouseEvent *event); void contextMenuEvent(QContextMenuEvent *event); From f0bf15a3b1094749e32192760d958f8e6bf77ee2 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 22 Dec 2011 12:00:10 +0100 Subject: [PATCH 21/33] removed some warning --- src/adaptors/UBCFFSubsetAdaptor.cpp | 5 +---- src/adaptors/UBMetadataDcSubsetAdaptor.cpp | 2 -- src/adaptors/publishing/UBDocumentPublisher.cpp | 3 --- src/board/UBBoardPaletteManager.cpp | 2 +- src/core/UBSettings.cpp | 16 ---------------- src/domain/UBGraphicsScene.cpp | 13 ------------- src/gui/UBDocumentNavigator.cpp | 7 ------- src/gui/UBLibraryWidget.cpp | 2 +- src/gui/UBMagnifer.cpp | 1 - src/gui/UBToolWidget.cpp | 1 - 10 files changed, 3 insertions(+), 49 deletions(-) diff --git a/src/adaptors/UBCFFSubsetAdaptor.cpp b/src/adaptors/UBCFFSubsetAdaptor.cpp index 223d9b2f..9f7b608f 100644 --- a/src/adaptors/UBCFFSubsetAdaptor.cpp +++ b/src/adaptors/UBCFFSubsetAdaptor.cpp @@ -729,10 +729,8 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvgFlash(const QDomElement &ele QTransform transform; QString textTransform = element.attribute(aTransform); - bool hastransform = false; if (!textTransform.isNull()) { transform = transformFromString(textTransform); - hastransform = true; } repositionSvgItem(flashItem, width, height, x, y, true, transform); hashSceneItem(element, flashItem); @@ -923,13 +921,12 @@ bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseIwbElement(QDomElement &element } bool locked = false; - bool isBackground = false; bool isEditableItem = false; bool isEditable = false; //Text items to convert to UBGraphicsTextItem only QString IDRef = element.attribute(aRef); if (!IDRef.isNull()) { - isBackground = element.hasAttribute(aBackground) ? strToBool(element.attribute(aBackground)) : false; + element.hasAttribute(aBackground) ? strToBool(element.attribute(aBackground)) : false; locked = element.hasAttribute(aBackground) ? strToBool(element.attribute(aBackground)) : false; isEditableItem = element.hasAttribute(aEditable); if (isEditableItem) diff --git a/src/adaptors/UBMetadataDcSubsetAdaptor.cpp b/src/adaptors/UBMetadataDcSubsetAdaptor.cpp index fb38f59a..a5dded62 100644 --- a/src/adaptors/UBMetadataDcSubsetAdaptor.cpp +++ b/src/adaptors/UBMetadataDcSubsetAdaptor.cpp @@ -90,8 +90,6 @@ void UBMetadataDcSubsetAdaptor::persist(UBDocumentProxy* proxy) xmlWriter.writeStartElement("Description"); xmlWriter.writeAttribute("about", proxy->metaData(UBSettings::documentIdentifer).toString()); - QDate today = QDate::currentDate(); - xmlWriter.writeTextElement(nsDc, "title", proxy->metaData(UBSettings::documentName).toString()); xmlWriter.writeTextElement(nsDc, "type", proxy->metaData(UBSettings::documentGroupName).toString()); xmlWriter.writeTextElement(nsDc, "date", QDate::currentDate().toString("yyyy-MM-dd")); diff --git a/src/adaptors/publishing/UBDocumentPublisher.cpp b/src/adaptors/publishing/UBDocumentPublisher.cpp index 02f8d900..d3ec39dd 100644 --- a/src/adaptors/publishing/UBDocumentPublisher.cpp +++ b/src/adaptors/publishing/UBDocumentPublisher.cpp @@ -240,8 +240,6 @@ void UBDocumentPublisher::upgradeDocumentForPublishing() { UBGraphicsScene *scene = UBSvgSubsetAdaptor::loadScene(mPublishingDocument, pageIndex); - bool sceneHasWidget = false; - QList widgets; foreach(QGraphicsItem* item, scene->items()){ @@ -249,7 +247,6 @@ void UBDocumentPublisher::upgradeDocumentForPublishing() if(widgetItem){ generateWidgetPropertyScript(widgetItem, pageIndex + 1); - sceneHasWidget = true; widgets << widgetItem; } } diff --git a/src/board/UBBoardPaletteManager.cpp b/src/board/UBBoardPaletteManager.cpp index 986a8356..bbd23925 100644 --- a/src/board/UBBoardPaletteManager.cpp +++ b/src/board/UBBoardPaletteManager.cpp @@ -81,8 +81,8 @@ UBBoardPaletteManager::UBBoardPaletteManager(QWidget* container, UBBoardControll , mpLibWidget(NULL) , mpCachePropWidget(NULL) , mpTeacherBarWidget(NULL) - , mpDesktopLibWidget(NULL) , mpDownloadWidget(NULL) + , mpDesktopLibWidget(NULL) , mDownloadInProgress(false) { setupPalettes(); diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index 0d39c960..c709c4e9 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -854,8 +854,6 @@ QString UBSettings::uniboardUserVideoDirectory() QString valideUserVideoDirectory = UBDesktopServices::storageLocation(QDesktopServices::MoviesLocation); - bool hasCreatedDir = false; - // first look into the application settings if (sAppSettings && getAppSettings()->contains("App/UserVideoDirectory")) { @@ -889,7 +887,6 @@ QString UBSettings::uniboardUserVideoDirectory() if (!dir.exists()) { dir.mkpath(userVideoDirectory); - hasCreatedDir = true; } if (dir.exists()) @@ -898,7 +895,6 @@ QString UBSettings::uniboardUserVideoDirectory() } else { - hasCreatedDir = false; qWarning() << "Failed to interpret App/UserVideoDirectory config : " + getAppSettings()->value("App/UserVideoDirectory").toString() + ", defaulting to " + valideUserVideoDirectory; @@ -929,8 +925,6 @@ QString UBSettings::podcastRecordingDirectory() QString validePodcastRecordingDirectory = UBDesktopServices::storageLocation(QDesktopServices::DesktopLocation); - bool hasCreatedDir = false; - // first look into the application settings if (sAppSettings && getAppSettings()->contains("Podcast/RecordingDirectory")) { @@ -964,7 +958,6 @@ QString UBSettings::podcastRecordingDirectory() if (!dir.exists()) { dir.mkpath(userPodcastRecordingDirectory); - hasCreatedDir = true; } if (dir.exists()) @@ -973,7 +966,6 @@ QString UBSettings::podcastRecordingDirectory() } else { - hasCreatedDir = false; qWarning() << "Failed to interpret Podcast/RecordingDirectory config : " + getAppSettings()->value("Podcast/RecordingDirectory").toString() + ", defaulting to user Desktop"; @@ -1099,8 +1091,6 @@ QString UBSettings::uniboardInteractiveUserDirectory() { QString valideUserInteractiveDirectory = uniboardDataDirectory() + "/interactive content"; - bool hasCreatedDir = false; - // first look into the application settings if (sAppSettings && getAppSettings()->contains("App/UserInteractiveContentDirectory")) { @@ -1129,7 +1119,6 @@ QString UBSettings::uniboardInteractiveUserDirectory() if (!dir.exists()) { dir.mkpath(userWidgetDirectory); - hasCreatedDir = true; } if (dir.exists()) @@ -1138,7 +1127,6 @@ QString UBSettings::uniboardInteractiveUserDirectory() } else { - hasCreatedDir = false; qWarning() << "Failed to interpret App/UserInteractiveContentDirectory config : " + getAppSettings()->value("App/UserInteractiveContentDirectory").toString() + ", defaulting to " + valideUserInteractiveDirectory; @@ -1194,8 +1182,6 @@ QString UBSettings::uniboardInteractiveFavoritesDirectory() { QString valideUserInteractiveDirectory = uniboardDataDirectory() + "/interactive favorites"; - bool hasCreatedDir = false; - // first look into the application settings if (sAppSettings && getAppSettings()->contains("App/UserInteractiveFavoritesDirectory")) { @@ -1224,7 +1210,6 @@ QString UBSettings::uniboardInteractiveFavoritesDirectory() if (!dir.exists()) { dir.mkpath(userWidgetDirectory); - hasCreatedDir = true; } if (dir.exists()) @@ -1233,7 +1218,6 @@ QString UBSettings::uniboardInteractiveFavoritesDirectory() } else { - hasCreatedDir = false; qWarning() << "Failed to interpret App/UserInteractiveFavoritesDirectory config : " + getAppSettings()->value("App/UserInteractiveFavoritesDirectory").toString() + ", defaulting to " + valideUserInteractiveDirectory; diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp index 476dd289..4698cc48 100644 --- a/src/domain/UBGraphicsScene.cpp +++ b/src/domain/UBGraphicsScene.cpp @@ -1586,8 +1586,6 @@ void UBGraphicsScene::addMagnifier(UBMagnifierParams params) QGraphicsView *cView = (QGraphicsView*)UBApplication::boardController->controlView(); QGraphicsView *dView = (QGraphicsView*)UBApplication::boardController->displayView(); - QPoint ccZeroPoint = cContainer->mapToGlobal(QPoint(0,0)); - QPoint cvZeroPoint = cView->mapToGlobal(QPoint(0,0)); QPoint dvZeroPoint = dView->mapToGlobal(QPoint(0,0)); int cvW = cView->width(); @@ -1635,8 +1633,6 @@ void UBGraphicsScene::moveMagnifier(QPoint newPos) QGraphicsView *cView = (QGraphicsView*)UBApplication::boardController->controlView(); QGraphicsView *dView = (QGraphicsView*)UBApplication::boardController->displayView(); - QPoint ccZeroPoint = cContainer->mapToGlobal(QPoint(0,0)); - QPoint cvZeroPoint = cView->mapToGlobal(QPoint(0,0)); QPoint dvZeroPoint = dView->mapToGlobal(QPoint(0,0)); int cvW = cView->width(); @@ -1711,16 +1707,7 @@ void UBGraphicsScene::addCache() { UBGraphicsCache* cache = new UBGraphicsCache(); mTools << cache; - QGraphicsView* view; - if(UBApplication::applicationController->displayManager()->hasDisplay()) - { - view = (QGraphicsView*)(UBApplication::boardController->displayView()); - } - else - { - view = (QGraphicsView*)(UBApplication::boardController->controlView()); - } addItem(cache); cache->setVisible(true); cache->setSelected(true); diff --git a/src/gui/UBDocumentNavigator.cpp b/src/gui/UBDocumentNavigator.cpp index fea695f4..1526a087 100644 --- a/src/gui/UBDocumentNavigator.cpp +++ b/src/gui/UBDocumentNavigator.cpp @@ -105,7 +105,6 @@ void UBDocumentNavigator::generateThumbnails() // Get the thumbnails QList thumbs = UBThumbnailAdaptor::load(mCrntDoc); - QGraphicsPixmapItem* selection = NULL; for(int i = 0; i < thumbs.count(); i++) { @@ -115,7 +114,6 @@ void UBDocumentNavigator::generateThumbnails() // Get the selected item if(UBApplication::boardController->activeSceneIndex() == i) { - selection = pixmapItem; mCrntItem = dynamic_cast(pixmapItem); mCrntItem->setSelected(true); } @@ -289,11 +287,6 @@ void UBDocumentNavigator::refreshScene() mLabels.at(i)->setPos(pos); } } - - QScrollBar *vertScrollBar = verticalScrollBar(); - int scrollBarThickness = 0; - if (vertScrollBar && vertScrollBar->isVisible()) - scrollBarThickness = vertScrollBar->width(); } /** diff --git a/src/gui/UBLibraryWidget.cpp b/src/gui/UBLibraryWidget.cpp index 53a0b2a1..31371a83 100644 --- a/src/gui/UBLibraryWidget.cpp +++ b/src/gui/UBLibraryWidget.cpp @@ -39,9 +39,9 @@ */ UBLibraryWidget::UBLibraryWidget(QWidget *parent, const char *name):UBThumbnailWidget(parent) , chainedElements(NULL) + , mLibraryController(NULL) , mpCrntDir(NULL) , mpCrntElem(NULL) - , mLibraryController(NULL) , mpTmpElem(NULL) { setObjectName(name); diff --git a/src/gui/UBMagnifer.cpp b/src/gui/UBMagnifer.cpp index c1a779a7..b98edf18 100644 --- a/src/gui/UBMagnifer.cpp +++ b/src/gui/UBMagnifer.cpp @@ -204,7 +204,6 @@ void UBMagnifier::mouseMoveEvent ( QMouseEvent * event ) { if(mShouldMoveWidget && (event->buttons() & Qt::LeftButton)) { - QPoint offset = event->pos() - mMousePressPos; move(pos() - mMousePressPos + event->pos()); event->accept(); diff --git a/src/gui/UBToolWidget.cpp b/src/gui/UBToolWidget.cpp index ea1bdee1..5bea3f1a 100644 --- a/src/gui/UBToolWidget.cpp +++ b/src/gui/UBToolWidget.cpp @@ -183,7 +183,6 @@ void UBToolWidget::mouseMoveEvent ( QMouseEvent * event ) { if(mShouldMoveWidget && (event->buttons() & Qt::LeftButton)) { - QPoint offset = event->pos() - mMousePressPos; move(pos() - mMousePressPos + event->pos()); event->accept(); } From ee2bd803157d23e611477c778d726e36665c2e3b Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 22 Dec 2011 12:06:28 +0100 Subject: [PATCH 22/33] removed some other warning --- src/board/UBBoardController.cpp | 4 +--- src/gui/UBActionPalette.cpp | 8 +------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 2ca0fe6d..7eac5b9e 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -1184,7 +1184,6 @@ void UBBoardController::ClearUndoStack() { QSet uniqueItems; // go through all stack command - int count = UBApplication::undoStack->count(); for(int i = 0; i < UBApplication::undoStack->count(); i++) { @@ -1214,7 +1213,6 @@ void UBBoardController::ClearUndoStack() // clear stack, and command list UBApplication::undoStack->clear(); - count = UBApplication::undoStack->count(); // go through all unique items, and check, ot on scene, or not. // if not on scene, than item can be deleted @@ -1226,7 +1224,7 @@ void UBBoardController::ClearUndoStack() UBGraphicsScene *scene = (UBGraphicsScene*)item->scene(); if(!scene) { - bool retCode = mActiveScene->deleteItem(item); + mActiveScene->deleteItem(item); } } diff --git a/src/gui/UBActionPalette.cpp b/src/gui/UBActionPalette.cpp index c5cd1ea6..564cf7b4 100644 --- a/src/gui/UBActionPalette.cpp +++ b/src/gui/UBActionPalette.cpp @@ -48,6 +48,7 @@ UBActionPalette::UBActionPalette(Qt::Corner corner, QWidget * parent, Qt::Orient void UBActionPalette::init(Qt::Orientation orientation) { + Q_UNUSED(orientation); m_customCloseProcessing = false; mButtonSize = QSize(32, 32); @@ -57,13 +58,6 @@ void UBActionPalette::init(Qt::Orientation orientation) mToolButtonStyle = Qt::ToolButtonIconOnly; mButtons.clear(); - QBoxLayout *layout = 0; - - if (orientation == Qt::Horizontal) - layout = new QHBoxLayout(this); - else - layout = new QVBoxLayout(this); - updateLayout(); } From 93042e7e8a98ab760d1e44c1c88031276c21e53e Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 22 Dec 2011 13:20:53 +0100 Subject: [PATCH 23/33] restored old version because it's necessary --- src/gui/UBActionPalette.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/gui/UBActionPalette.cpp b/src/gui/UBActionPalette.cpp index 564cf7b4..c5cd1ea6 100644 --- a/src/gui/UBActionPalette.cpp +++ b/src/gui/UBActionPalette.cpp @@ -48,7 +48,6 @@ UBActionPalette::UBActionPalette(Qt::Corner corner, QWidget * parent, Qt::Orient void UBActionPalette::init(Qt::Orientation orientation) { - Q_UNUSED(orientation); m_customCloseProcessing = false; mButtonSize = QSize(32, 32); @@ -58,6 +57,13 @@ void UBActionPalette::init(Qt::Orientation orientation) mToolButtonStyle = Qt::ToolButtonIconOnly; mButtons.clear(); + QBoxLayout *layout = 0; + + if (orientation == Qt::Horizontal) + layout = new QHBoxLayout(this); + else + layout = new QVBoxLayout(this); + updateLayout(); } From 08027012ebb804f9fc9e8d79f3d403e1b20a8271 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Thu, 22 Dec 2011 13:43:19 +0100 Subject: [PATCH 24/33] fixed Sankore data path issue. We should provide an way to recover old data --- src/core/UBSettings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index c709c4e9..e368aedb 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -762,7 +762,7 @@ QString UBSettings::uniboardDataDirectory() } } QString qtDataPath = UBFileSystemUtils::normalizeFilePath(UBDesktopServices::storageLocation(QDesktopServices::DataLocation)); - qtDataPath.replace("/Sankore", ""); + qtDataPath.replace("/Sankore/Sankore 3.1", "/Sankore"); return qtDataPath; } From 540de5173442f2b22844a03d819d7ab37fcd832e Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Fri, 23 Dec 2011 08:47:57 +0100 Subject: [PATCH 25/33] Fixed some issue name --- src/core/UBApplication.cpp | 3 +-- src/core/UBSettings.cpp | 2 +- src/gui/UBActionPalette.cpp | 4 ---- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/core/UBApplication.cpp b/src/core/UBApplication.cpp index 992204ee..b0f063f4 100644 --- a/src/core/UBApplication.cpp +++ b/src/core/UBApplication.cpp @@ -109,7 +109,7 @@ UBApplication::UBApplication(const QString &id, int &argc, char **argv) : QtSing setOrganizationName("Sankore"); setOrganizationDomain("sankore.org"); - setApplicationName("Sankore 3.1"); + setApplicationName("Open-Sankore"); setApplicationVersion(UBVERSION); @@ -222,7 +222,6 @@ int UBApplication::exec(const QString& pFileToImport) QWebSettings *gs = QWebSettings::globalSettings(); gs->setAttribute(QWebSettings::JavaEnabled, true); gs->setAttribute(QWebSettings::PluginsEnabled, true); - gs->setAttribute(QWebSettings::JavaEnabled, true); gs->setAttribute(QWebSettings::LocalStorageDatabaseEnabled, true); gs->setAttribute(QWebSettings::OfflineWebApplicationCacheEnabled, true); gs->setAttribute(QWebSettings::OfflineStorageDatabaseEnabled, true); diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index e368aedb..63f06d6b 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -762,7 +762,7 @@ QString UBSettings::uniboardDataDirectory() } } QString qtDataPath = UBFileSystemUtils::normalizeFilePath(UBDesktopServices::storageLocation(QDesktopServices::DataLocation)); - qtDataPath.replace("/Sankore/Sankore 3.1", "/Sankore"); + qtDataPath.replace("/Open-Sankore", ""); return qtDataPath; } diff --git a/src/gui/UBActionPalette.cpp b/src/gui/UBActionPalette.cpp index c5cd1ea6..9647590e 100644 --- a/src/gui/UBActionPalette.cpp +++ b/src/gui/UBActionPalette.cpp @@ -306,9 +306,5 @@ UBActionPaletteButton* UBActionPalette::getButtonFromAction(QAction *action) bool UBActionPaletteButton::hitButton(const QPoint &pos) const { Q_UNUSED(pos); -// if(isChecked()) -// { -// return false; -// } return true; } From 7c9e34d5ce6c14cb6a8cad0474465b2b455b68b5 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Fri, 23 Dec 2011 08:55:27 +0100 Subject: [PATCH 26/33] fixed path on mac --- src/core/UBSettings.cpp | 1 + src/frameworks/UBDesktopServices_mac.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index 63f06d6b..8d01f3c2 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -763,6 +763,7 @@ QString UBSettings::uniboardDataDirectory() } QString qtDataPath = UBFileSystemUtils::normalizeFilePath(UBDesktopServices::storageLocation(QDesktopServices::DataLocation)); qtDataPath.replace("/Open-Sankore", ""); + qDebug() << qtDataPath; return qtDataPath; } diff --git a/src/frameworks/UBDesktopServices_mac.cpp b/src/frameworks/UBDesktopServices_mac.cpp index a2b9a019..839502dc 100644 --- a/src/frameworks/UBDesktopServices_mac.cpp +++ b/src/frameworks/UBDesktopServices_mac.cpp @@ -96,7 +96,7 @@ QString UBDesktopServices::storageLocation(StandardLocation type) QString path = getFullPath(ref); if (QDesktopServices::DataLocation == type || QDesktopServices::CacheLocation == type) - path += "/Sankore/Sankore"; + path += "/Sankore/Open-Sankore"; return path; } From f3146a028b3b82b2e186d04cb4ad130ae61e7269 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Fri, 23 Dec 2011 10:56:37 +0100 Subject: [PATCH 27/33] Removed UBDesktopServices because QDesktopService has been fixed on Qt --- src/adaptors/UBExportAdaptor.cpp | 1 - src/board/UBLibraryController.cpp | 7 +- src/core/UBPersistenceManager.cpp | 3 +- src/core/UBSettings.cpp | 26 ++--- src/desktop/UBDesktopAnnotationController.cpp | 1 + src/document/UBDocumentController.cpp | 1 - src/frameworks/UBDesktopServices.h | 34 ------ src/frameworks/UBDesktopServices_linux.cpp | 21 ---- src/frameworks/UBDesktopServices_mac.cpp | 103 ------------------ src/frameworks/UBDesktopServices_win.cpp | 23 ---- src/frameworks/UBFileSystemUtils.cpp | 7 +- src/frameworks/frameworks.pri | 87 +++++++-------- src/network/UBNetworkAccessManager.cpp | 2 - src/podcast/UBPodcastController.cpp | 1 - .../quicktime/UBQuickTimeVideoEncoder.cpp | 1 - .../UBWindowsMediaVideoEncoder.cpp | 1 - .../UBSoftwareUpdateController.cpp | 1 - src/tools/UBGraphicsCache.cpp | 3 +- src/transition/UniboardSankoreTransition.cpp | 7 +- src/web/UBTrapFlashController.cpp | 2 +- src/web/browser/WBDownloadManager.cpp | 4 +- 21 files changed, 67 insertions(+), 269 deletions(-) delete mode 100644 src/frameworks/UBDesktopServices.h delete mode 100644 src/frameworks/UBDesktopServices_linux.cpp delete mode 100644 src/frameworks/UBDesktopServices_mac.cpp delete mode 100644 src/frameworks/UBDesktopServices_win.cpp diff --git a/src/adaptors/UBExportAdaptor.cpp b/src/adaptors/UBExportAdaptor.cpp index 737a27b5..e2b8b3f6 100644 --- a/src/adaptors/UBExportAdaptor.cpp +++ b/src/adaptors/UBExportAdaptor.cpp @@ -17,7 +17,6 @@ #include "document/UBDocumentProxy.h" -#include "frameworks/UBDesktopServices.h" #include "frameworks/UBFileSystemUtils.h" #include "core/UBSettings.h" diff --git a/src/board/UBLibraryController.cpp b/src/board/UBLibraryController.cpp index 1326b458..12c0eb67 100644 --- a/src/board/UBLibraryController.cpp +++ b/src/board/UBLibraryController.cpp @@ -16,7 +16,6 @@ #include "frameworks/UBFileSystemUtils.h" #include "frameworks/UBPlatformUtils.h" -#include "frameworks/UBDesktopServices.h" #include "core/UBApplication.h" #include "core/UBPersistenceManager.h" @@ -54,13 +53,13 @@ UBLibraryController::UBLibraryController(QWidget *pParentWidget) : { readFavoriteList(); - mAudioStandardDirectoryPath = QUrl::fromLocalFile(UBDesktopServices::storageLocation(QDesktopServices::MusicLocation)); + mAudioStandardDirectoryPath = QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::MusicLocation)); userPath(mAudioStandardDirectoryPath); - mVideoStandardDirectoryPath = QUrl::fromLocalFile(UBDesktopServices::storageLocation(QDesktopServices::MoviesLocation)); + mVideoStandardDirectoryPath = QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::MoviesLocation)); userPath(mVideoStandardDirectoryPath); - mPicturesStandardDirectoryPath = QUrl::fromLocalFile(UBDesktopServices::storageLocation(QDesktopServices::PicturesLocation)); + mPicturesStandardDirectoryPath = QUrl::fromLocalFile(QDesktopServices::storageLocation(QDesktopServices::PicturesLocation)); userPath(mPicturesStandardDirectoryPath); mInteractiveUserDirectoryPath = QUrl::fromLocalFile(UBSettings::settings()->uniboardInteractiveUserDirectory()); diff --git a/src/core/UBPersistenceManager.cpp b/src/core/UBPersistenceManager.cpp index 8e92e360..9ac5d13a 100644 --- a/src/core/UBPersistenceManager.cpp +++ b/src/core/UBPersistenceManager.cpp @@ -20,7 +20,6 @@ #include "frameworks/UBPlatformUtils.h" #include "frameworks/UBFileSystemUtils.h" -#include "frameworks/UBDesktopServices.h" #include "core/UBApplication.h" #include "core/UBSettings.h" @@ -171,7 +170,7 @@ QStringList UBPersistenceManager::allGips() QStringList UBPersistenceManager::allSounds() { - QString soundLibraryPath = UBDesktopServices::storageLocation(QDesktopServices::MusicLocation); + QString soundLibraryPath = QDesktopServices::storageLocation(QDesktopServices::MusicLocation); QDir dir(soundLibraryPath); diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index 8d01f3c2..9847842f 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -13,7 +13,6 @@ #include "frameworks/UBPlatformUtils.h" #include "frameworks/UBFileSystemUtils.h" -#include "frameworks/UBDesktopServices.h" #include "frameworks/UBCryptoUtils.h" #include "UB.h" @@ -294,15 +293,15 @@ void UBSettings::init() mirroringRefreshRateInFps = new UBSetting(this, "Mirroring", "RefreshRateInFramePerSecond", QVariant(defaultRefreshRateInFramePerSecond)); - lastImportFilePath = new UBSetting(this, "Import", "LastImportFilePath", QVariant(UBDesktopServices::storageLocation(QDesktopServices::DocumentsLocation))); - lastImportFolderPath = new UBSetting(this, "Import", "LastImportFolderPath", QVariant(UBDesktopServices::storageLocation(QDesktopServices::DocumentsLocation))); - lastExportFilePath = new UBSetting(this, "Export", "LastExportFilePath", QVariant(UBDesktopServices::storageLocation(QDesktopServices::DocumentsLocation))); - lastExportDirPath = new UBSetting(this, "Export", "LastExportDirPath", QVariant(UBDesktopServices::storageLocation(QDesktopServices::DocumentsLocation))); - lastImportToLibraryPath = new UBSetting(this, "Library", "LastImportToLibraryPath", QVariant(UBDesktopServices::storageLocation(QDesktopServices::DocumentsLocation))); + lastImportFilePath = new UBSetting(this, "Import", "LastImportFilePath", QVariant(QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation))); + lastImportFolderPath = new UBSetting(this, "Import", "LastImportFolderPath", QVariant(QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation))); + lastExportFilePath = new UBSetting(this, "Export", "LastExportFilePath", QVariant(QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation))); + lastExportDirPath = new UBSetting(this, "Export", "LastExportDirPath", QVariant(QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation))); + lastImportToLibraryPath = new UBSetting(this, "Library", "LastImportToLibraryPath", QVariant(QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation))); - lastPicturePath = new UBSetting(this, "Library", "LastPicturePath", QVariant(UBDesktopServices::storageLocation(QDesktopServices::PicturesLocation))); - lastWidgetPath = new UBSetting(this, "Library", "LastWidgetPath", QVariant(UBDesktopServices::storageLocation(QDesktopServices::DocumentsLocation))); - lastVideoPath = new UBSetting(this, "Library", "LastVideoPath", QVariant(UBDesktopServices::storageLocation(QDesktopServices::MoviesLocation))); + lastPicturePath = new UBSetting(this, "Library", "LastPicturePath", QVariant(QDesktopServices::storageLocation(QDesktopServices::PicturesLocation))); + lastWidgetPath = new UBSetting(this, "Library", "LastWidgetPath", QVariant(QDesktopServices::storageLocation(QDesktopServices::DocumentsLocation))); + lastVideoPath = new UBSetting(this, "Library", "LastVideoPath", QVariant(QDesktopServices::storageLocation(QDesktopServices::MoviesLocation))); defaultDocumentGroupName = tr("Untitled Documents"); documentTrashGroupName = tr("Trash"); @@ -761,9 +760,8 @@ QString UBSettings::uniboardDataDirectory() // ", defaulting to " + UBDesktopServices::storageLocation(QDesktopServices::DataLocation); } } - QString qtDataPath = UBFileSystemUtils::normalizeFilePath(UBDesktopServices::storageLocation(QDesktopServices::DataLocation)); + QString qtDataPath = UBFileSystemUtils::normalizeFilePath(QDesktopServices::storageLocation(QDesktopServices::DataLocation)); qtDataPath.replace("/Open-Sankore", ""); - qDebug() << qtDataPath; return qtDataPath; } @@ -771,7 +769,7 @@ QString UBSettings::uniboardDataDirectory() QString UBSettings::uniboardUserImageDirectory() { QString valideUserImageDirectory = - UBDesktopServices::storageLocation(QDesktopServices::PicturesLocation) + QDesktopServices::storageLocation(QDesktopServices::PicturesLocation) + "/" + QCoreApplication::applicationName(); bool hasCreatedDir = false; @@ -853,7 +851,7 @@ QString UBSettings::defaultUserImagesDirectory() QString UBSettings::uniboardUserVideoDirectory() { QString valideUserVideoDirectory = - UBDesktopServices::storageLocation(QDesktopServices::MoviesLocation); + QDesktopServices::storageLocation(QDesktopServices::MoviesLocation); // first look into the application settings if (sAppSettings && getAppSettings()->contains("App/UserVideoDirectory")) @@ -924,7 +922,7 @@ QString UBSettings::uniboardUserVideoDirectory() QString UBSettings::podcastRecordingDirectory() { QString validePodcastRecordingDirectory = - UBDesktopServices::storageLocation(QDesktopServices::DesktopLocation); + QDesktopServices::storageLocation(QDesktopServices::DesktopLocation); // first look into the application settings if (sAppSettings && getAppSettings()->contains("Podcast/RecordingDirectory")) diff --git a/src/desktop/UBDesktopAnnotationController.cpp b/src/desktop/UBDesktopAnnotationController.cpp index aa4b0504..48663bf2 100644 --- a/src/desktop/UBDesktopAnnotationController.cpp +++ b/src/desktop/UBDesktopAnnotationController.cpp @@ -372,6 +372,7 @@ void UBDesktopAnnotationController::close() void UBDesktopAnnotationController::stylusToolChanged(int tool) { + Q_UNUSED(tool); // UBStylusTool::Enum eTool = (UBStylusTool::Enum)tool; // if(eTool != UBStylusTool::Selector && eTool != UBStylusTool::Text) // { diff --git a/src/document/UBDocumentController.cpp b/src/document/UBDocumentController.cpp index 27539123..04595b12 100644 --- a/src/document/UBDocumentController.cpp +++ b/src/document/UBDocumentController.cpp @@ -19,7 +19,6 @@ #include "frameworks/UBFileSystemUtils.h" #include "frameworks/UBStringUtils.h" -#include "frameworks/UBDesktopServices.h" #include "frameworks/UBPlatformUtils.h" #include "core/UBApplication.h" diff --git a/src/frameworks/UBDesktopServices.h b/src/frameworks/UBDesktopServices.h deleted file mode 100644 index 0e7c3dc9..00000000 --- a/src/frameworks/UBDesktopServices.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef UBDESKTOPSERVICES_H_ -#define UBDESKTOPSERVICES_H_ - -#include -#include - -#include "core/memcheck.h" - -// TODO Qt 4.6 #error Delete this UBDesktopServices class, -// it was used to work around a bug in Qt 4.4 that was fixed in Qt 4.5 and another that should be fixed -// in 4.5.1 - -class UBDesktopServices : public QDesktopServices -{ - public: - static QString storageLocation(StandardLocation type); -}; - -#endif /* UBDESKTOPSERVICES_H_ */ diff --git a/src/frameworks/UBDesktopServices_linux.cpp b/src/frameworks/UBDesktopServices_linux.cpp deleted file mode 100644 index 2c03b51b..00000000 --- a/src/frameworks/UBDesktopServices_linux.cpp +++ /dev/null @@ -1,21 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "UBDesktopServices.h" - -QString UBDesktopServices::storageLocation(StandardLocation type) -{ - return QDesktopServices::storageLocation(type); -} diff --git a/src/frameworks/UBDesktopServices_mac.cpp b/src/frameworks/UBDesktopServices_mac.cpp deleted file mode 100644 index 839502dc..00000000 --- a/src/frameworks/UBDesktopServices_mac.cpp +++ /dev/null @@ -1,103 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "UBDesktopServices.h" - -#include - -#import - -/* - Translates a QDesktopServices::StandardLocation into the mac equivalent. -*/ -OSType translateLocation(QDesktopServices::StandardLocation type) -{ - switch (type) { - case QDesktopServices::DesktopLocation: - return kDesktopFolderType; break; - - case QDesktopServices::DocumentsLocation: - return kDocumentsFolderType; break; - - case QDesktopServices::FontsLocation: - // There are at least two different font directories on the mac: /Library/Fonts and ~/Library/Fonts. - // To select a specific one we have to specify a different first parameter when calling FSFindFolder. - return kFontsFolderType; break; - - case QDesktopServices::ApplicationsLocation: - return kApplicationsFolderType; break; - - case QDesktopServices::MusicLocation: - return kMusicDocumentsFolderType; break; - - case QDesktopServices::MoviesLocation: - return kMovieDocumentsFolderType; break; - - case QDesktopServices::PicturesLocation: - return kPictureDocumentsFolderType; break; - - case QDesktopServices::TempLocation: - return kTemporaryFolderType; break; - - case QDesktopServices::DataLocation: - return kApplicationSupportFolderType; break; - - case QDesktopServices::CacheLocation: - return kCachedDataFolderType; break; - - default: - return kDesktopFolderType; break; - } -} - -/* - Constructs a full unicode path from a FSRef. -*/ -static QString getFullPath(const FSRef &ref) -{ - QByteArray ba(2048, 0); - if (FSRefMakePath(&ref, reinterpret_cast(ba.data()), ba.size()) == noErr) - return QString::fromUtf8(ba).normalized(QString::NormalizationForm_C); - return QString(); -} - -// Mac OS X implementation of QDesktopServices is bugged in Qt 4.4, -// we use the implementation inspired from Qt 4.5 snapshot -QString UBDesktopServices::storageLocation(StandardLocation type) -{ - if (QDesktopServices::HomeLocation == type) - return QDir::homePath(); - else if (QDesktopServices::TempLocation == type) - return QDir::tempPath(); - - short domain = kOnAppropriateDisk; - - if (QDesktopServices::DataLocation == type || QDesktopServices::CacheLocation == type) - domain = kUserDomain; - - // http://developer.apple.com/documentation/Carbon/Reference/Folder_Manager/Reference/reference.html - FSRef ref; - OSErr err = FSFindFolder(domain, translateLocation(type), false, &ref); - if (err) - return QString(); - - QString path = getFullPath(ref); - - if (QDesktopServices::DataLocation == type || QDesktopServices::CacheLocation == type) - path += "/Sankore/Open-Sankore"; - - return path; -} - diff --git a/src/frameworks/UBDesktopServices_win.cpp b/src/frameworks/UBDesktopServices_win.cpp deleted file mode 100644 index d92fa1e7..00000000 --- a/src/frameworks/UBDesktopServices_win.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/* - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "UBDesktopServices.h" -#include "core/memcheck.h" - -QString UBDesktopServices::storageLocation(StandardLocation type) -{ - // Windows implementation of QDesktopServices is fine - return QDesktopServices::storageLocation(type); -} diff --git a/src/frameworks/UBFileSystemUtils.cpp b/src/frameworks/UBFileSystemUtils.cpp index 1c315dfe..1cd8e27e 100644 --- a/src/frameworks/UBFileSystemUtils.cpp +++ b/src/frameworks/UBFileSystemUtils.cpp @@ -14,7 +14,6 @@ */ #include "UBFileSystemUtils.h" -#include "UBDesktopServices.h" #include @@ -57,12 +56,12 @@ bool UBFileSystemUtils::isAZipFile(QString &filePath) QString UBFileSystemUtils::defaultTempDirPath() { - return UBDesktopServices::storageLocation(QDesktopServices::TempLocation) + "/" + defaultTempDirName(); + return QDesktopServices::storageLocation(QDesktopServices::TempLocation) + "/" + defaultTempDirName(); } QString UBFileSystemUtils::createTempDir(const QString& templateString, bool autoDeleteOnExit) { - QString appTempDir = UBDesktopServices::storageLocation(QDesktopServices::TempLocation) + QString appTempDir = QDesktopServices::storageLocation(QDesktopServices::TempLocation) + "/" + templateString; int index = 0; @@ -127,7 +126,7 @@ void UBFileSystemUtils::deleteAllTempDirCreatedDuringSession() void UBFileSystemUtils::cleanupGhostTempFolders(const QString& templateString) { - QDir dir(UBDesktopServices::storageLocation(QDesktopServices::TempLocation)); + QDir dir(QDesktopServices::storageLocation(QDesktopServices::TempLocation)); foreach (QFileInfo dirContent, dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden , QDir::Name)) { diff --git a/src/frameworks/frameworks.pri b/src/frameworks/frameworks.pri index e38a9aa1..2f317b93 100644 --- a/src/frameworks/frameworks.pri +++ b/src/frameworks/frameworks.pri @@ -1,46 +1,41 @@ - -HEADERS += src/frameworks/UBGeometryUtils.h \ - src/frameworks/UBDesktopServices.h \ - src/frameworks/UBPlatformUtils.h \ - src/frameworks/UBFileSystemUtils.h \ - src/frameworks/UBStringUtils.h \ - src/frameworks/UBVersion.h \ - src/frameworks/UBCoreGraphicsScene.h \ - src/frameworks/UBCryptoUtils.h \ - src/frameworks/UBBase32.h - -SOURCES += src/frameworks/UBGeometryUtils.cpp \ - src/frameworks/UBPlatformUtils.cpp \ - src/frameworks/UBFileSystemUtils.cpp \ - src/frameworks/UBStringUtils.cpp \ - src/frameworks/UBVersion.cpp \ - src/frameworks/UBCoreGraphicsScene.cpp \ - src/frameworks/UBCryptoUtils.cpp \ - src/frameworks/UBBase32.cpp - - -win32 { - - SOURCES += src/frameworks/UBPlatformUtils_win.cpp \ - src/frameworks/UBDesktopServices_win.cpp -} - - -macx { - - SOURCES += src/frameworks/UBPlatformUtils_mac.mm \ - src/frameworks/UBDesktopServices_mac.cpp - -} - - -linux-g++ { - - SOURCES += src/frameworks/UBPlatformUtils_linux.cpp \ - src/frameworks/UBDesktopServices_linux.cpp -} -linux-g++-32 { - - SOURCES += src/frameworks/UBPlatformUtils_linux.cpp \ - src/frameworks/UBDesktopServices_linux.cpp -} + +HEADERS += src/frameworks/UBGeometryUtils.h \ + src/frameworks/UBPlatformUtils.h \ + src/frameworks/UBFileSystemUtils.h \ + src/frameworks/UBStringUtils.h \ + src/frameworks/UBVersion.h \ + src/frameworks/UBCoreGraphicsScene.h \ + src/frameworks/UBCryptoUtils.h \ + src/frameworks/UBBase32.h + +SOURCES += src/frameworks/UBGeometryUtils.cpp \ + src/frameworks/UBPlatformUtils.cpp \ + src/frameworks/UBFileSystemUtils.cpp \ + src/frameworks/UBStringUtils.cpp \ + src/frameworks/UBVersion.cpp \ + src/frameworks/UBCoreGraphicsScene.cpp \ + src/frameworks/UBCryptoUtils.cpp \ + src/frameworks/UBBase32.cpp + + +win32 { + + SOURCES += src/frameworks/UBPlatformUtils_win.cpp +} + + +macx { + + SOURCES += src/frameworks/UBPlatformUtils_mac.mm + +} + + +linux-g++ { + + SOURCES += src/frameworks/UBPlatformUtils_linux.cpp +} +linux-g++-32 { + + SOURCES += src/frameworks/UBPlatformUtils_linux.cpp +} diff --git a/src/network/UBNetworkAccessManager.cpp b/src/network/UBNetworkAccessManager.cpp index 4f32444a..4a7f1ed1 100644 --- a/src/network/UBNetworkAccessManager.cpp +++ b/src/network/UBNetworkAccessManager.cpp @@ -17,8 +17,6 @@ #include #include -#include "frameworks/UBDesktopServices.h" - #include "core/UBApplication.h" #include "core/UBApplicationController.h" #include "core/UBSettings.h" diff --git a/src/podcast/UBPodcastController.cpp b/src/podcast/UBPodcastController.cpp index 9b6e03d5..e377249a 100644 --- a/src/podcast/UBPodcastController.cpp +++ b/src/podcast/UBPodcastController.cpp @@ -15,7 +15,6 @@ #include "UBPodcastController.h" -#include "frameworks/UBDesktopServices.h" #include "frameworks/UBFileSystemUtils.h" #include "frameworks/UBStringUtils.h" #include "frameworks/UBPlatformUtils.h" diff --git a/src/podcast/quicktime/UBQuickTimeVideoEncoder.cpp b/src/podcast/quicktime/UBQuickTimeVideoEncoder.cpp index f188ab80..2ae6b90e 100644 --- a/src/podcast/quicktime/UBQuickTimeVideoEncoder.cpp +++ b/src/podcast/quicktime/UBQuickTimeVideoEncoder.cpp @@ -19,7 +19,6 @@ #include -#include "frameworks/UBDesktopServices.h" #include "frameworks/UBFileSystemUtils.h" #include "core/UBApplication.h" diff --git a/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.cpp b/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.cpp index bc2ee2fe..1d2d773e 100644 --- a/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.cpp +++ b/src/podcast/windowsmedia/UBWindowsMediaVideoEncoder.cpp @@ -17,7 +17,6 @@ #include -#include "frameworks/UBDesktopServices.h" #include "frameworks/UBFileSystemUtils.h" #include "core/UBApplication.h" diff --git a/src/softwareupdate/UBSoftwareUpdateController.cpp b/src/softwareupdate/UBSoftwareUpdateController.cpp index 50fad512..6f651db1 100644 --- a/src/softwareupdate/UBSoftwareUpdateController.cpp +++ b/src/softwareupdate/UBSoftwareUpdateController.cpp @@ -14,7 +14,6 @@ */ //#include "frameworks/UBVersion.h" -//#include "frameworks/UBDesktopServices.h" //#include "frameworks/UBFileSystemUtils.h" //#include "frameworks/UBPlatformUtils.h" diff --git a/src/tools/UBGraphicsCache.cpp b/src/tools/UBGraphicsCache.cpp index a7e97895..cff7c43c 100644 --- a/src/tools/UBGraphicsCache.cpp +++ b/src/tools/UBGraphicsCache.cpp @@ -89,10 +89,9 @@ void UBGraphicsCache::init() void UBGraphicsCache::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { - //Q_UNUSED(option); + Q_UNUSED(option); Q_UNUSED(widget); -// setZValue(CACHE_ZVALUE); UBGraphicsItem::assignZValue(this, CACHE_ZVALUE); painter->setBrush(mMaskColor); diff --git a/src/transition/UniboardSankoreTransition.cpp b/src/transition/UniboardSankoreTransition.cpp index 6ed3acae..32c320af 100644 --- a/src/transition/UniboardSankoreTransition.cpp +++ b/src/transition/UniboardSankoreTransition.cpp @@ -15,7 +15,6 @@ #include "UniboardSankoreTransition.h" #include "core/UBSettings.h" -#include "frameworks/UBDesktopServices.h" #include "frameworks/UBFileSystemUtils.h" #include "core/UBApplication.h" #include "core/UBPersistenceManager.h" @@ -28,9 +27,9 @@ UniboardSankoreTransition::UniboardSankoreTransition(QObject *parent) : , mTransitionDlg(NULL) , mThread(NULL) { - mOldSankoreDirectory = UBFileSystemUtils::normalizeFilePath(UBDesktopServices::storageLocation(QDesktopServices::DataLocation)); + mOldSankoreDirectory = UBFileSystemUtils::normalizeFilePath(QDesktopServices::storageLocation(QDesktopServices::DataLocation)); - mUniboardSourceDirectory = UBFileSystemUtils::normalizeFilePath(UBDesktopServices::storageLocation(QDesktopServices::DataLocation)); + mUniboardSourceDirectory = UBFileSystemUtils::normalizeFilePath(QDesktopServices::storageLocation(QDesktopServices::DataLocation)); #if defined(Q_WS_MACX) mOldSankoreDirectory.replace("Sankore/Sankore 3.1", "Sankore"); mUniboardSourceDirectory.replace("Sankore/Sankore 3.1", "Uniboard"); @@ -86,7 +85,7 @@ void UniboardSankoreTransition::documentTransition() QFileInfoList fileInfoList = UBFileSystemUtils::allElementsInDirectory(uniboardDocumentDirectory); fileInfoList << UBFileSystemUtils::allElementsInDirectory(mOldSankoreDirectory + "/document"); - QString backupDirectoryPath = UBFileSystemUtils::normalizeFilePath(UBDesktopServices::storageLocation(QDesktopServices::DesktopLocation)); + QString backupDirectoryPath = UBFileSystemUtils::normalizeFilePath(QDesktopServices::storageLocation(QDesktopServices::DesktopLocation)); if (fileInfoList.count() != 0){ mTransitionDlg = new UBUpdateDlg(NULL, fileInfoList.count(), backupDirectoryPath); diff --git a/src/web/UBTrapFlashController.cpp b/src/web/UBTrapFlashController.cpp index d93c0a17..a701353d 100644 --- a/src/web/UBTrapFlashController.cpp +++ b/src/web/UBTrapFlashController.cpp @@ -116,7 +116,7 @@ void UBTrapFlashController::text_Changed(const QString &newText) void UBTrapFlashController::text_Edited(const QString &newText) { - + Q_UNUSED(newText); } void UBTrapFlashController::hideTrapFlash() diff --git a/src/web/browser/WBDownloadManager.cpp b/src/web/browser/WBDownloadManager.cpp index f45976d8..1b3206f6 100644 --- a/src/web/browser/WBDownloadManager.cpp +++ b/src/web/browser/WBDownloadManager.cpp @@ -58,8 +58,6 @@ #include #include -#include "frameworks/UBDesktopServices.h" - #include "network/UBAutoSaver.h" #include "network/UBNetworkAccessManager.h" #include "frameworks/UBFileSystemUtils.h" @@ -134,7 +132,7 @@ void WBDownloadItem::getFileName() { QSettings settings; settings.beginGroup(QLatin1String("downloadmanager")); - QString defaultLocation = !mCustomDownloadPath.isEmpty() ? mCustomDownloadPath : UBDesktopServices::storageLocation(QDesktopServices::DesktopLocation); + QString defaultLocation = !mCustomDownloadPath.isEmpty() ? mCustomDownloadPath : QDesktopServices::storageLocation(QDesktopServices::DesktopLocation); QString downloadDirectory = settings.value(QLatin1String("downloadDirectory"), defaultLocation).toString(); if (!downloadDirectory.isEmpty()) downloadDirectory += QLatin1Char('/'); From 1fc6a86b4ab9ac99a33ae9e6dd5f64b595ef3172 Mon Sep 17 00:00:00 2001 From: Ivan Ilin Date: Mon, 26 Dec 2011 18:00:35 +0200 Subject: [PATCH 28/33] Sankore 396 444-446 --- Sankore_3.1.pro | 3 +- resources/images/tab_mask.png | Bin 0 -> 137 bytes resources/sankore.qrc | 1 + src/board/UBBoardPaletteManager.cpp | 6 +- src/core/UBSettings.cpp | 4 +- src/desktop/UBDesktopAnnotationController.cpp | 16 +- src/desktop/UBDesktopPalette.cpp | 1 - src/document/UBDocumentController.cpp | 2 +- src/gui/UBDockPalette.cpp | 587 +++++++++++++----- src/gui/UBDockPalette.h | 45 +- src/gui/UBLeftPalette.cpp | 10 +- src/gui/UBRightPalette.cpp | 7 +- src/web/browser/WBBrowserWindow.cpp | 1 + 13 files changed, 487 insertions(+), 196 deletions(-) create mode 100644 resources/images/tab_mask.png diff --git a/Sankore_3.1.pro b/Sankore_3.1.pro index 08702f67..6f361ea0 100644 --- a/Sankore_3.1.pro +++ b/Sankore_3.1.pro @@ -4,7 +4,8 @@ TEMPLATE = app THIRD_PARTY_PATH=../Sankore-ThirdParty CONFIG += debug_and_release \ - no_include_pwd + no_include_pwd \ + link_prl VERSION_MAJ = 1 VERSION_MIN = 40 diff --git a/resources/images/tab_mask.png b/resources/images/tab_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..035608fab9226017b6c3f0807bf1ba5fe8ec8eee GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^B0#Lc!3HG%8Q!`Lq*#ibJVQ8upoSx*1IXtr@Q5sC zVBk9f!i-b3`J{n@+MX_sAs(G?&p0wN7;vyCY<>3iyrK6GX_f_(_gI-spBbPb!qw`u eFhJvvVT{Z>ri9kl3xT>A7(8A5T-G@yGywo4&m?aE literal 0 HcmV?d00001 diff --git a/resources/sankore.qrc b/resources/sankore.qrc index d71aadae..c0ff2a69 100644 --- a/resources/sankore.qrc +++ b/resources/sankore.qrc @@ -337,5 +337,6 @@ images/libpalette/WebSearchCategory.svg images/download_close.png images/download_open.png + images/tab_mask.png diff --git a/src/board/UBBoardPaletteManager.cpp b/src/board/UBBoardPaletteManager.cpp index 986a8356..c0bf708c 100644 --- a/src/board/UBBoardPaletteManager.cpp +++ b/src/board/UBBoardPaletteManager.cpp @@ -727,7 +727,7 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is case eUBDockPaletteWidget_BOARD: { mLeftPalette->setParent(UBApplication::boardController->controlContainer()); - mRightPalette->setParent(UBApplication::boardController->controlContainer()); + mRightPalette->assignParent(UBApplication::boardController->controlContainer()); if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL) { @@ -752,7 +752,7 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is case eUBDockPaletteWidget_DESKTOP: { mLeftPalette->setParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView()); - mRightPalette->setParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView()); + mRightPalette->assignParent((QWidget*)UBApplication::applicationController->uninotesController()->drawingView()); if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL) { @@ -802,7 +802,7 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is mLeftPalette->setVisible(false); mRightPalette->setVisible(false); mLeftPalette->setParent(0); - mRightPalette->setParent(0); + mRightPalette->assignParent(0); if (UBPlatformUtils::hasVirtualKeyboard() && mKeyboardPalette != NULL) { diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp index 0d39c960..b995df59 100644 --- a/src/core/UBSettings.cpp +++ b/src/core/UBSettings.cpp @@ -194,8 +194,8 @@ void UBSettings::init() appEnableAutomaticSoftwareUpdates = new UBSetting(this, "App", "EnableAutomaticSoftwareUpdates", true); appEnableSoftwareUpdates = new UBSetting(this, "App", "EnableSoftwareUpdates", true); appToolBarOrientationVertical = new UBSetting(this, "App", "ToolBarOrientationVertical", false); - navigPaletteWidth = new UBSetting(this, "Board", "NavigPaletteWidth", 300); - libPaletteWidth = new UBSetting(this, "Board", "LibPaletteWidth", 300); + navigPaletteWidth = new UBSetting(this, "Board", "NavigPaletteWidth", 270); + libPaletteWidth = new UBSetting(this, "Board", "LibPaletteWidth", 270); appIsInSoftwareUpdateProcess = new UBSetting(this, "App", "IsInSoftwareUpdateProcess", false); appLastSessionDocumentUUID = new UBSetting(this, "App", "LastSessionDocumentUUID", ""); diff --git a/src/desktop/UBDesktopAnnotationController.cpp b/src/desktop/UBDesktopAnnotationController.cpp index aa4b0504..dd7d7058 100644 --- a/src/desktop/UBDesktopAnnotationController.cpp +++ b/src/desktop/UBDesktopAnnotationController.cpp @@ -900,7 +900,7 @@ void UBDesktopAnnotationController::updateMask(bool bTransparent) { if(bTransparent) { - // Here we have to generate a new mask. This method is certainly resource + // Here we have to generate a new mask This method is certainly resource // consuming but for the moment this is the only solution that I found. mMask = QPixmap(mTransparentDrawingView->width(), mTransparentDrawingView->height()); @@ -922,13 +922,17 @@ void UBDesktopAnnotationController::updateMask(bool bTransparent) UBApplication::boardController->paletteManager()->mKeyboardPalette->width(), UBApplication::boardController->paletteManager()->mKeyboardPalette->height()); } -// UBApplication::boardController->paletteManager()->mDesktopRightPalette if(UBApplication::boardController->paletteManager()->rightPalette()->isVisible()) { - p.drawRect(UBApplication::boardController->paletteManager()->rightPalette()->geometry().x(), - UBApplication::boardController->paletteManager()->rightPalette()->geometry().y(), - UBApplication::boardController->paletteManager()->rightPalette()->width(), - UBApplication::boardController->paletteManager()->rightPalette()->height()); + QRect rightPalette(UBApplication::boardController->paletteManager()->rightPalette()->geometry().x(), + UBApplication::boardController->paletteManager()->rightPalette()->geometry().y(), + UBApplication::boardController->paletteManager()->rightPalette()->width(), + UBApplication::boardController->paletteManager()->rightPalette()->height()); + + QRect tabsPalette(UBApplication::boardController->paletteManager()->rightPalette()->getTabPaletteRect()); + + p.drawRect(rightPalette); + p.drawRect(tabsPalette); } p.end(); diff --git a/src/desktop/UBDesktopPalette.cpp b/src/desktop/UBDesktopPalette.cpp index d3641157..2ac196f9 100644 --- a/src/desktop/UBDesktopPalette.cpp +++ b/src/desktop/UBDesktopPalette.cpp @@ -111,7 +111,6 @@ void UBDesktopPalette::updateShowHideState(bool pShowEnabled) mShowHideAction->setToolTip(tr("Show Board on Secondary Screen")); else mShowHideAction->setToolTip(tr("Show Desktop on Secondary Screen")); - } diff --git a/src/document/UBDocumentController.cpp b/src/document/UBDocumentController.cpp index 27539123..c1b9e86e 100644 --- a/src/document/UBDocumentController.cpp +++ b/src/document/UBDocumentController.cpp @@ -1455,7 +1455,7 @@ bool UBDocumentController::isOKToOpenDocument(UBDocumentProxy* proxy) QString docVersion = proxy->metaData(UBSettings::documentVersion).toString(); if (docVersion.isEmpty() || docVersion.startsWith("4.1") || docVersion.startsWith("4.2") - || docVersion.startsWith("4.3") || docVersion.startsWith("4.4")) // TODO UB 4.7 update if necessary + || docVersion.startsWith("4.3") || docVersion.startsWith("4.4") || docVersion.startsWith("4.5")) // TODO UB 4.7 update if necessary { return true; } diff --git a/src/gui/UBDockPalette.cpp b/src/gui/UBDockPalette.cpp index 8707d6ca..4822099f 100644 --- a/src/gui/UBDockPalette.cpp +++ b/src/gui/UBDockPalette.cpp @@ -41,6 +41,7 @@ UBDockPalette::UBDockPalette(QWidget *parent, const char *name) , mpStackWidget(NULL) , mpLayout(NULL) , mCurrentTab(0) + , mTabPalette(new UBTabDockPalete(this, parent)) { setObjectName(name); @@ -54,7 +55,7 @@ UBDockPalette::UBDockPalette(QWidget *parent, const char *name) mTabWidgets.clear(); // We let 2 pixels in order to keep a small border for the resizing - setMinimumWidth(2*border() + 2); + setMinimumWidth(/*2*border() + 2*/0); if (parent) { @@ -93,6 +94,10 @@ UBDockPalette::~UBDockPalette() delete mpLayout; mpLayout = NULL; } + if (NULL != mTabPalette) { + delete mTabPalette; + mTabPalette = NULL; + } } /** @@ -123,139 +128,139 @@ void UBDockPalette::setOrientation(eUBDockOrientation orientation) setMaximumWidth(parentWidget()->width()); setMinimumWidth(maximumWidth()); } - } /** * \brief Handle the mouse move event * @param as the mouse event */ -void UBDockPalette::mouseMoveEvent(QMouseEvent *event) -{ - QPoint p = event->pos(); - - if(mCanResize && ((mMousePressPos - p).manhattanLength() > QApplication::startDragDistance())) - { - switch(mOrientation) - { - case eUBDockOrientation_Left: - if(p.x() < collapseWidth() && p.x() >= minimumWidth()) - { - resize(border(), height()); - mLastWidth = collapseWidth() + 1; - mResized = true; - } - else if(p.x() <= maximumWidth() && p.x() >= minimumWidth()) - { - resize(p.x(), height()); - mResized = true; - } - break; - case eUBDockOrientation_Right: - if((this->x() + p.x() > parentWidget()->width() - collapseWidth()) && (this->x() + p.x() < parentWidget()->width())) - { - resize(border(), height()); - mLastWidth = collapseWidth() + 1; - mResized = true; - } - else if((this->x() + p.x() >= parentWidget()->width() - maximumWidth()) && (this->x() + p.x() <= parentWidget()->width() - this->minimumWidth())) - { - resize(parentWidget()->width() - (this->x() + p.x()), height()); - mResized = true; - } - - break; - case eUBDockOrientation_Top: - case eUBDockOrientation_Bottom: - if(p.y() <= maximumHeight()) - { - resize(width(), p.y()); - mResized = true; - } - break; - - default: - break; - } - } -} +//void UBDockPalette::mouseMoveEvent(QMouseEvent *event) +//{ + +// QPoint p = event->pos(); + +// if(mCanResize && ((mMousePressPos - p).manhattanLength() > QApplication::startDragDistance())) +// { +// switch(mOrientation) +// { +// case eUBDockOrientation_Left: +// if(p.x() < collapseWidth() && p.x() >= minimumWidth()) +// { +// resize(border(), height()); +// mLastWidth = collapseWidth() + 1; +// mResized = true; +// } +// else if(p.x() <= maximumWidth() && p.x() >= minimumWidth()) +// { +// resize(p.x(), height()); +// mResized = true; +// } +// break; +// case eUBDockOrientation_Right: +// if((this->x() + p.x() > parentWidget()->width() - collapseWidth()) && (this->x() + p.x() < parentWidget()->width())) +// { +// resize(border(), height()); +// mLastWidth = collapseWidth() + 1; +// mResized = true; +// } +// else if((this->x() + p.x() >= parentWidget()->width() - maximumWidth()) && (this->x() + p.x() <= parentWidget()->width() - this->minimumWidth())) +// { +// resize(parentWidget()->width() - (this->x() + p.x()), height()); +// mResized = true; +// } + +// break; +// case eUBDockOrientation_Top: +// case eUBDockOrientation_Bottom: +// if(p.y() <= maximumHeight()) +// { +// resize(width(), p.y()); +// mResized = true; +// } +// break; + +// default: +// break; +// } +// } +//} /** * \brief Handle the mouse press event * @param as the mouse event */ -void UBDockPalette::mousePressEvent(QMouseEvent *event) -{ - mClickTime = QTime::currentTime(); - // The goal here is to verify if the user can resize the widget. - // It is only possible to resize it if the border is selected - QPoint p = event->pos(); - mMousePressPos = p; - mResized = false; - - switch(mOrientation) - { - case eUBDockOrientation_Left: - if((p.x() >= width() - 2 * border()) && (p.x() <= width())) - { - mCanResize = true; - } - break; - case eUBDockOrientation_Right: - if((p.x() >= 0) && (p.x() <= 2 * border())) - { - mCanResize = true; - } - break; - case eUBDockOrientation_Top: - // Not supported yet - break; - case eUBDockOrientation_Bottom: - // Not supported yet - break; - default: - break; - } -} +//void UBDockPalette::mousePressEvent(QMouseEvent *event) +//{ +// mClickTime = QTime::currentTime(); +// // The goal here is to verify if the user can resize the widget. +// // It is only possible to resize it if the border is selected +// QPoint p = event->pos(); +// mMousePressPos = p; +// mResized = false; + +// switch(mOrientation) +// { +// case eUBDockOrientation_Left: +// if((p.x() >= width() - 2 * border()) && (p.x() <= width())) +// { +// mCanResize = true; +// } +// break; +// case eUBDockOrientation_Right: +// if((p.x() >= 0) && (p.x() <= 2 * border())) +// { +// mCanResize = true; +// } +// break; +// case eUBDockOrientation_Top: +// // Not supported yet +// break; +// case eUBDockOrientation_Bottom: +// // Not supported yet +// break; +// default: +// break; +// } +//} /** * \brief Handle the mouse release event * @param event as the mouse event */ -void UBDockPalette::mouseReleaseEvent(QMouseEvent *event) -{ - Q_UNUSED(event); - if(!mResized && mClickTime.elapsed() < CLICKTIME) - { - int nbTabs = mTabWidgets.size(); - int clickedTab = 0; - // If the clicked position is in the tab, perform the related action - if(eUBDockOrientation_Left == mOrientation) - { - if(mMousePressPos.x() >= width() - 2*border() && - mMousePressPos.y() >= mHTab && - mMousePressPos.x() <= width() && - mMousePressPos.y() <= mHTab + nbTabs*TABSIZE + (nbTabs -1)*tabSpacing()) - { - clickedTab = (mMousePressPos.y() - mHTab)/(TABSIZE+tabSpacing()); - tabClicked(clickedTab); - } - } - else if(eUBDockOrientation_Right == mOrientation) - { - if(mMousePressPos.x() >= 0 && - mMousePressPos.x() <= 2*border() && - mMousePressPos.y() >= mHTab && - mMousePressPos.y() <= mHTab + nbTabs*TABSIZE + (nbTabs -1)*tabSpacing()) - { - clickedTab = (mMousePressPos.y() - mHTab)/(TABSIZE+tabSpacing()); - tabClicked(clickedTab); - } - } - } - - mCanResize = false; -} +//void UBDockPalette::mouseReleaseEvent(QMouseEvent *event) +//{ +// Q_UNUSED(event); +// if(!mResized && mClickTime.elapsed() < CLICKTIME) +// { +// int nbTabs = mTabWidgets.size(); +// int clickedTab = 0; +// // If the clicked position is in the tab, perform the related action +// if(eUBDockOrientation_Left == mOrientation) +// { +// if(mMousePressPos.x() >= width() - 2*border() && +// mMousePressPos.y() >= mHTab && +// mMousePressPos.x() <= width() && +// mMousePressPos.y() <= mHTab + nbTabs*TABSIZE + (nbTabs -1)*tabSpacing()) +// { +// clickedTab = (mMousePressPos.y() - mHTab)/(TABSIZE+tabSpacing()); +// tabClicked(clickedTab); +// } +// } +// else if(eUBDockOrientation_Right == mOrientation) +// { +// if(mMousePressPos.x() >= 0 && +// mMousePressPos.x() <= 2*border() && +// mMousePressPos.y() >= mHTab && +// mMousePressPos.y() <= mHTab + nbTabs*TABSIZE + (nbTabs -1)*tabSpacing()) +// { +// clickedTab = (mMousePressPos.y() - mHTab)/(TABSIZE+tabSpacing()); +// tabClicked(clickedTab); +// } +// } +// } + +// mCanResize = false; +//} /** * \brief Handle the resize event @@ -288,6 +293,7 @@ void UBDockPalette::resizeEvent(QResizeEvent *event) break; } move(origin.x(), origin.y()); + moveTabs(); } /** @@ -332,11 +338,11 @@ void UBDockPalette::paintEvent(QPaintEvent *event) // First draw the BIG RECTANGLE (I write it big because the rectangle is big...) if(mOrientation == eUBDockOrientation_Left) { - path.addRect(0.0, 0.0, width()-2*border(), height()); + path.addRect(0.0, 0.0, width(), height()); } else if(mOrientation == eUBDockOrientation_Right) { - path.addRect(2*border(), 0.0, width()-2*border(), height()); + path.addRect(0.0, 0.0, width(), height()); } // THEN DRAW THE small tabs (yes, the tabs are small...) @@ -348,52 +354,53 @@ void UBDockPalette::paintEvent(QPaintEvent *event) { mHTab = height() - border() - nbTabs*TABSIZE - (nbTabs-1)*tabSpacing(); } - - for(int i = 0; i < mTabWidgets.size(); i++) - { - UBDockPaletteWidget* pCrntWidget = mTabWidgets.at(i); - if(NULL != pCrntWidget) - { - if(mOrientation == eUBDockOrientation_Left) - { - path.addRoundedRect(width()-4*border(), mHTab + i*TABSIZE + i*tabSpacing(), 4*border(), TABSIZE, radius(), radius()); - painter.drawPath(path); - QPixmap iconPixmap; - if(mCollapseWidth >= width()) - { - // Get the collapsed icon - iconPixmap = pCrntWidget->iconToRight(); - } - else - { - // Get the expanded icon - iconPixmap = pCrntWidget->iconToLeft(); - } - painter.drawPixmap(width() - 2*border() + 1, mHTab + i*TABSIZE + i*tabSpacing() + 1 , 2*border() - 4, TABSIZE - 2, iconPixmap); - } - else if(mOrientation == eUBDockOrientation_Right) - { - path.addRoundedRect(0.0, mHTab + i*TABSIZE + i*tabSpacing(), 4*border(), TABSIZE, radius(), radius()); - painter.drawPath(path); - QPixmap iconPixmap; - if(mCollapseWidth >= width()) - { - // Get the collapsed icon - iconPixmap = pCrntWidget->iconToLeft(); - } - else - { - // Get the expanded icon - iconPixmap = pCrntWidget->iconToRight(); - } - painter.drawPixmap(2, mHTab + i*TABSIZE + i*tabSpacing() + 1, 2*border() - 4, TABSIZE - 2, iconPixmap); - } - else - { - painter.drawRoundedRect(border(), border(), width() - 2 * border(), height() - 2 * border(), radius(), radius()); - } - } - } + painter.drawPath(path); + +// for(int i = 0; i < mTabWidgets.size(); i++) +// { +// UBDockPaletteWidget* pCrntWidget = mTabWidgets.at(i); +// if(NULL != pCrntWidget) +// { +// if(mOrientation == eUBDockOrientation_Left) +// { +// path.addRoundedRect(width()-4*border(), mHTab + i*TABSIZE + i*tabSpacing(), 4*border(), TABSIZE, radius(), radius()); +// painter.drawPath(path); +// QPixmap iconPixmap; +// if(mCollapseWidth >= width()) +// { +// // Get the collapsed icon +// iconPixmap = pCrntWidget->iconToRight(); +// } +// else +// { +// // Get the expanded icon +// iconPixmap = pCrntWidget->iconToLeft(); +// } +// painter.drawPixmap(width() - 2*border() + 1, mHTab + i*TABSIZE + i*tabSpacing() + 1 , 2*border() - 4, TABSIZE - 2, iconPixmap); +// } +// else if(mOrientation == eUBDockOrientation_Right) +// { +// path.addRoundedRect(0.0, mHTab + i*TABSIZE + i*tabSpacing(), 4*border(), TABSIZE, radius(), radius()); +// painter.drawPath(path); +// QPixmap iconPixmap; +// if(mCollapseWidth >= width()) +// { +// // Get the collapsed icon +// iconPixmap = pCrntWidget->iconToLeft(); +// } +// else +// { +// // Get the expanded icon +// iconPixmap = pCrntWidget->iconToRight(); +// } +// painter.drawPixmap(2, mHTab + i*TABSIZE + i*tabSpacing() + 1, 2*border() - 4, TABSIZE - 2, iconPixmap); +// } +// else +// { +// painter.drawRoundedRect(border(), border(), width() - 2 * border(), height() - 2 * border(), radius(), radius()); +// } +// } +// } } } @@ -460,6 +467,7 @@ void UBDockPalette::tabClicked(int tabIndex) { toggleCollapseExpand(); } + mTabPalette->update(); } /** @@ -493,7 +501,7 @@ void UBDockPalette::toggleCollapseExpand() { // The palette must be collapsed mLastWidth = width(); - resize(2*border(), height()); + resize(0, height()); } else { @@ -550,6 +558,7 @@ void UBDockPalette::addTab(UBDockPaletteWidget *widget) mTabWidgets.append(widget); mpStackWidget->addWidget(widget); mpStackWidget->setCurrentWidget(widget); + resizeTabs(); update(); } } @@ -571,6 +580,8 @@ void UBDockPalette::removeTab(const QString &widgetName) break; } } + resizeTabs(); + mCurrentTab = qMax(mCurrentTab - 1, 0); } /** @@ -666,3 +677,245 @@ void UBDockPalette::onAllDownloadsFinished() } } } + +void UBDockPalette::moveTabs() +{ + if (!mHTab) { + if(eUBDockTabOrientation_Up == mTabsOrientation) { + mHTab = border(); + } else { + mHTab = height() - border() - mTabWidgets.size() * TABSIZE - (mTabWidgets.size() - 1) * tabSpacing(); + } + } + + QPoint origin(width(), mHTab); + + switch (mOrientation) { + case eUBDockOrientation_Left: + origin.setX(width()); + break; + case eUBDockOrientation_Right: + if (parentWidget()) { + origin.setX(parentWidget()->width() - width() - mTabPalette->width()); + } + break; + case eUBDockOrientation_Top: ; + case eUBDockOrientation_Bottom: ; + } + + mTabPalette->move(origin.x(), origin.y()); +} +void UBDockPalette::resizeTabs() +{ + int numTabs = mTabWidgets.size(); + mTabPalette->resize(2 * border(), (numTabs * TABSIZE) + qMax(numTabs - 1, 0) * tabSpacing()); +} +QRect UBDockPalette::getTabPaletteRect() +{ + QRect tabsRect = mTabPalette->rect(); + QPoint topLeft = mTabPalette->mapToParent(tabsRect.topLeft()); + QPoint bottomRight = mTabPalette->mapToParent(tabsRect.bottomRight()); + + return QRect(topLeft, bottomRight); +} +void UBDockPalette::assignParent(QWidget *widget) +{ + setParent(widget); + mTabPalette->setParent(widget); +} +void UBDockPalette::setVisible(bool visible) +{ + QWidget::setVisible(visible); + mTabPalette->setVisible(visible); +} + +UBTabDockPalete::UBTabDockPalete(UBDockPalette *dockPalette, QWidget *parent) : + QWidget(parent) + , dock(dockPalette) +{ + int numTabs = dock->mTabWidgets.size(); + resize(2 * dock->border(), (numTabs * TABSIZE) + qMax(numTabs - 1, 0) * dock->tabSpacing()); +// move(dock->width(), 20); + + setAttribute(Qt::WA_TranslucentBackground); +} + +void UBTabDockPalete::paintEvent(QPaintEvent */*event*/) +{ + int nTabs = dock->mTabWidgets.size(); + if (nTabs <= 0) { + qDebug() << "not enough tabs"; + return; + } + + QPainter painter(this); + painter.setRenderHint(QPainter::Antialiasing); + painter.setPen(Qt::NoPen); + painter.setBrush(dock->mBackgroundBrush); + + int yFrom = 0; + for (int i = 0; i < nTabs; i++) { + UBDockPaletteWidget* pCrntWidget = dock->mTabWidgets.at(i); + QPainterPath path; + path.setFillRule(Qt::WindingFill); + QPixmap iconPixmap; + + switch (dock->mOrientation) { + case eUBDockOrientation_Left: + path.addRect(0, yFrom, width() / 2, TABSIZE); + path.addRoundedRect(0, yFrom, width(), TABSIZE, dock->radius(), dock->radius()); + if (pCrntWidget) { + if(dock->mCollapseWidth >= dock->width()) { + // Get the collapsed icon + iconPixmap = pCrntWidget->iconToRight(); + } else { + // Get the expanded icon + iconPixmap = pCrntWidget->iconToLeft(); + } + + } + break; + + case eUBDockOrientation_Right: + path.addRect(width() /2, yFrom, width() / 2, TABSIZE); + path.addRoundedRect(0, yFrom, width(), TABSIZE, dock->radius(), dock->radius()); + if (pCrntWidget) { + if(dock->mCollapseWidth >= dock->width()) { + // Get the collapsed icon + iconPixmap = pCrntWidget->iconToLeft(); + } else { + // Get the expanded icon + iconPixmap = pCrntWidget->iconToRight(); + } + } + break; + + case eUBDockOrientation_Top: ; + case eUBDockOrientation_Bottom: ; + default: + break; + } + + painter.save(); + QPixmap transparencyPix(":/images/tab_mask.png"); + if (dock->mCurrentTab != i) { + iconPixmap.setAlphaChannel(transparencyPix); + QColor color(0x7F, 0x7F, 0x7F, 0x3F); + painter.setBrush(QBrush(color)); + } + + painter.drawPath(path); + painter.drawPixmap(2, yFrom + 2, width() - 4, TABSIZE - 4, iconPixmap); + yFrom += (TABSIZE + dock->tabSpacing()); + painter.restore(); + } +} +UBTabDockPalete::~UBTabDockPalete() +{ +} + +void UBTabDockPalete::mousePressEvent(QMouseEvent *event) +{ + dock->mClickTime = QTime::currentTime(); + // The goal here is to verify if the user can resize the widget. + // It is only possible to resize it if the border is selected + QPoint p = event->pos(); + dock->mMousePressPos = p; + dock->mResized = false; + + switch(dock->mOrientation) { + case eUBDockOrientation_Left: + dock->mCanResize = true; + break; + case eUBDockOrientation_Right: + dock->mCanResize = true; + break; + case eUBDockOrientation_Top: + // Not supported yet + break; + case eUBDockOrientation_Bottom: + // Not supported yet + break; + default: + break; + } +} +void UBTabDockPalete::mouseMoveEvent(QMouseEvent *event) +{ + QPoint p = event->pos(); + + if(dock->mCanResize && ((dock->mMousePressPos - p).manhattanLength() > QApplication::startDragDistance())) + { + switch(dock->mOrientation) { + + case eUBDockOrientation_Left: + p.setX(p.x() + dock->width()); + if(p.x() < dock->collapseWidth() && p.x() >= dock->minimumWidth()) { + dock->resize(0, dock->height()); + dock->mLastWidth = dock->collapseWidth() + 1; + dock->mResized = true; + } else if (p.x() <= dock->maximumWidth() && p.x() >= dock->minimumWidth()) { + dock->resize(p.x(), dock->height()); + dock->mResized = true; + } + break; + + case eUBDockOrientation_Right: + p.setX(p.x() - 2 * dock->border()); + if((dock->x() + p.x() > dock->parentWidget()->width() - dock->collapseWidth()) && (dock->x() + p.x() < dock->parentWidget()->width())) { + dock->resize(0, dock->height()); + dock->mLastWidth = dock->collapseWidth() + 1; + dock->mResized = true; + } else if((dock->x() + p.x() >= dock->parentWidget()->width() - dock->maximumWidth()) && (dock->x() + p.x() <= dock->parentWidget()->width() - dock->minimumWidth())) { + dock->resize(dock->parentWidget()->width() - (dock->x() + p.x()), dock->height()); + dock->mResized = true; + } + break; + + case eUBDockOrientation_Top: + case eUBDockOrientation_Bottom: + if(p.y() <= dock->maximumHeight()) { + dock->resize(width(), p.y()); + dock->mResized = true; + } + break; + + default: + break; + } + } +} +void UBTabDockPalete::mouseReleaseEvent(QMouseEvent *event) +{ + Q_UNUSED(event); + if(!dock->mResized && dock->mClickTime.elapsed() < CLICKTIME) { + int nbTabs = dock->mTabWidgets.size(); + int clickedTab = 0; + // If the clicked position is in the tab, perform the related action + + if(eUBDockOrientation_Left == dock->mOrientation) { + if(dock->mMousePressPos.y() >= dock->mHTab && + dock->mMousePressPos.x() <= width() && + dock->mMousePressPos.y() <= dock->mHTab + nbTabs * TABSIZE + (nbTabs -1)*dock->tabSpacing()) { + + clickedTab = (dock->mMousePressPos.y() - dock->mHTab) / (TABSIZE + dock->tabSpacing()); + dock->tabClicked(clickedTab); + } + + } else if (eUBDockOrientation_Right == dock->mOrientation) { + if(dock->mMousePressPos.x() >= 0 && + dock->mMousePressPos.x() <= width() && + dock->mMousePressPos.y() >= 0 && + dock->mMousePressPos.y() <= nbTabs * TABSIZE + (nbTabs -1) * dock->tabSpacing()) { + + clickedTab = (dock->mMousePressPos.y())/(TABSIZE+dock->tabSpacing()); + dock->tabClicked(clickedTab); + } + } + } + + dock->mCanResize = false; +} + + + diff --git a/src/gui/UBDockPalette.h b/src/gui/UBDockPalette.h index a1b3c758..0e00ad14 100644 --- a/src/gui/UBDockPalette.h +++ b/src/gui/UBDockPalette.h @@ -31,8 +31,8 @@ #include "UBDockPaletteWidget.h" -#define TABSIZE 50 -#define CLICKTIME 1000000 +#define TABSIZE 50 //Height of the tab of the palette +#define CLICKTIME 1000000 //Clicktime to expand or collapse paltte /** * \brief The dock positions @@ -51,9 +51,33 @@ typedef enum eUBDockTabOrientation_Down /** Down tabs */ }eUBDockTabOrientation; +class UBDockPalette; + +class UBTabDockPalete : public QWidget +{ + Q_OBJECT + friend class UBDockPalette; + +public: + + UBTabDockPalete(UBDockPalette *dockPalette, QWidget *parent = 0); + ~UBTabDockPalete(); + +protected: + virtual void mousePressEvent(QMouseEvent *event); + virtual void mouseMoveEvent(QMouseEvent *event); + virtual void mouseReleaseEvent(QMouseEvent *event); + virtual void paintEvent(QPaintEvent *event); + +private: + UBDockPalette *dock; +}; + class UBDockPalette : public QWidget { Q_OBJECT + friend class UBTabDockPalete; + public: UBDockPalette(QWidget* parent=0, const char* name="UBDockPalette"); ~UBDockPalette(); @@ -62,10 +86,14 @@ public: void setOrientation(eUBDockOrientation orientation); void setTabsOrientation(eUBDockTabOrientation orientation); void showTabWidget(int tabIndex); + QRect getTabPaletteRect(); - virtual void mouseMoveEvent(QMouseEvent *event); - virtual void mousePressEvent(QMouseEvent *event); - virtual void mouseReleaseEvent(QMouseEvent *event); + virtual void assignParent(QWidget *widget); + virtual void setVisible(bool visible); + +// virtual void mouseMoveEvent(QMouseEvent *event); +// virtual void mousePressEvent(QMouseEvent *event); +// virtual void mouseReleaseEvent(QMouseEvent *event); virtual void paintEvent(QPaintEvent *event); virtual void enterEvent(QEvent *); virtual void leaveEvent(QEvent *); @@ -77,7 +105,7 @@ public: void connectSignals(); - QVector GetWidgetsList() { return mRegisteredWidgets; }; + QVector GetWidgetsList() { return mRegisteredWidgets; } public slots: void onShowTabWidget(const QString& widgetName); @@ -137,6 +165,11 @@ private: void tabClicked(int tabIndex); int tabSpacing(); void toggleCollapseExpand(); + void moveTabs(); + void resizeTabs(); + +private: + UBTabDockPalete *mTabPalette; }; diff --git a/src/gui/UBLeftPalette.cpp b/src/gui/UBLeftPalette.cpp index 391b0efe..9cb518e7 100644 --- a/src/gui/UBLeftPalette.cpp +++ b/src/gui/UBLeftPalette.cpp @@ -24,11 +24,11 @@ UBLeftPalette::UBLeftPalette(QWidget *parent, const char *name):UBDockPalette(pa { setObjectName(name); setOrientation(eUBDockOrientation_Left); - mLastWidth = 300; - mCollapseWidth = 180; + mLastWidth = 270; + mCollapseWidth = 150; resize(UBSettings::settings()->navigPaletteWidth->get().toInt(), parentWidget()->height()); - mpLayout->setContentsMargins(customMargin(), customMargin(), 2*border() + customMargin(), customMargin()); +// mpLayout->setContentsMargins(customMargin(), customMargin(), 2*border() + customMargin(), customMargin()); } @@ -45,7 +45,7 @@ UBLeftPalette::~UBLeftPalette() */ void UBLeftPalette::updateMaxWidth() { - setMaximumWidth(300); + setMaximumWidth(270); } /** @@ -55,5 +55,5 @@ void UBLeftPalette::updateMaxWidth() void UBLeftPalette::resizeEvent(QResizeEvent *event) { UBDockPalette::resizeEvent(event); - UBSettings::settings()->navigPaletteWidth->set(width()); +// UBSettings::settings()->navigPaletteWidth->set(width()); } diff --git a/src/gui/UBRightPalette.cpp b/src/gui/UBRightPalette.cpp index 3c36658d..b6d21b00 100644 --- a/src/gui/UBRightPalette.cpp +++ b/src/gui/UBRightPalette.cpp @@ -26,10 +26,10 @@ UBRightPalette::UBRightPalette(QWidget *parent, const char *name):UBDockPalette( { setObjectName(name); setOrientation(eUBDockOrientation_Right); - mCollapseWidth = 180; - mLastWidth = 300; + mCollapseWidth = 150; + mLastWidth = 270; resize(UBSettings::settings()->libPaletteWidth->get().toInt(), parentWidget()->height()); - mpLayout->setContentsMargins(2*border() + customMargin(), customMargin(), customMargin(), customMargin()); +// mpLayout->setContentsMargins(2*border() + customMargin(), customMargin(), customMargin(), customMargin()); } /** @@ -37,7 +37,6 @@ UBRightPalette::UBRightPalette(QWidget *parent, const char *name):UBDockPalette( */ UBRightPalette::~UBRightPalette() { - } /** diff --git a/src/web/browser/WBBrowserWindow.cpp b/src/web/browser/WBBrowserWindow.cpp index 14f96f09..e8151811 100644 --- a/src/web/browser/WBBrowserWindow.cpp +++ b/src/web/browser/WBBrowserWindow.cpp @@ -205,6 +205,7 @@ void WBBrowserWindow::setupToolBar() connect(mSearchToolBar, SIGNAL(search(const QUrl&)), SLOT(loadUrl(const QUrl&))); mChaseWidget = new WBChaseWidget(this); + mWebToolBar->insertWidget(mUniboardMainWindow->actionWebBigger, mChaseWidget); mWebToolBar->insertSeparator(mUniboardMainWindow->actionWebBigger); connect(mUniboardMainWindow->actionHome, SIGNAL(triggered()), this , SLOT(slotHome())); From 1e440ee18eca640df230d01b4a79c7077d9fe950 Mon Sep 17 00:00:00 2001 From: Ivan Ilin Date: Mon, 26 Dec 2011 19:34:59 +0200 Subject: [PATCH 29/33] Rules for build on x86-64 linux --- src/desktop/desktop.pri | 1 + src/frameworks/frameworks.pri | 4 ++++ src/gui/gui.pri | 4 ++++ src/pdf-merger/pdfMerger.pri | 5 +++++ 4 files changed, 14 insertions(+) diff --git a/src/desktop/desktop.pri b/src/desktop/desktop.pri index 37600cd2..642e014c 100644 --- a/src/desktop/desktop.pri +++ b/src/desktop/desktop.pri @@ -23,3 +23,4 @@ macx:SOURCES += src/desktop/UBWindowCapture_mac.mm linux-g++:SOURCES += src/desktop/UBWindowCapture_linux.cpp linux-g++-32:SOURCES += src/desktop/UBWindowCapture_linux.cpp +linux-g++-64:SOURCES += src/desktop/UBWindowCapture_linux.cpp diff --git a/src/frameworks/frameworks.pri b/src/frameworks/frameworks.pri index 2f317b93..4a53c6aa 100644 --- a/src/frameworks/frameworks.pri +++ b/src/frameworks/frameworks.pri @@ -39,3 +39,7 @@ linux-g++-32 { SOURCES += src/frameworks/UBPlatformUtils_linux.cpp } +linux-g++-64 { + + SOURCES += src/frameworks/UBPlatformUtils_linux.cpp +} diff --git a/src/gui/gui.pri b/src/gui/gui.pri index 1e65ca8f..20075dfb 100644 --- a/src/gui/gui.pri +++ b/src/gui/gui.pri @@ -119,3 +119,7 @@ linux-g++-32 { SOURCES += src/gui/UBKeyboardPalette_linux.cpp } +linux-g++-64 { + + SOURCES += src/gui/UBKeyboardPalette_linux.cpp +} diff --git a/src/pdf-merger/pdfMerger.pri b/src/pdf-merger/pdfMerger.pri index c976b39d..edc8d1fd 100644 --- a/src/pdf-merger/pdfMerger.pri +++ b/src/pdf-merger/pdfMerger.pri @@ -78,3 +78,8 @@ linux-g++-32 { LIBS += -lz } +linux-g++-64 { + + LIBS += -lz + +} From fbbcb0a9bcc606b91485c9a7f8c0d90570f60cb4 Mon Sep 17 00:00:00 2001 From: Ivan Ilin Date: Tue, 27 Dec 2011 17:03:09 +0200 Subject: [PATCH 30/33] Sankore-423 --- src/core/UBApplicationController.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/UBApplicationController.cpp b/src/core/UBApplicationController.cpp index 6550c56a..68c9b81b 100644 --- a/src/core/UBApplicationController.cpp +++ b/src/core/UBApplicationController.cpp @@ -697,7 +697,7 @@ void UBApplicationController::importFile(const QString& pFilePath) bool success = false; - document = UBDocumentManager::documentManager()->importFile(fileToOpen, UBSettings::defaultDocumentGroupName); + document = UBDocumentManager::documentManager()->importFile(fileToOpen, ""); success = (document != 0); From f797f8848b6f6c866b89ced1f224931a0bd22c89 Mon Sep 17 00:00:00 2001 From: Ivan Ilin Date: Wed, 28 Dec 2011 12:36:33 +0200 Subject: [PATCH 31/33] hotfix linux-g++-64 build --- Sankore_3.1.pro | 7 +++++-- src/board/UBBoardController.h | 1 + src/board/UBBoardPaletteManager.cpp | 24 ++++++++++++++++++++++++ src/board/UBBoardPaletteManager.h | 1 + src/board/UBLibraryController.cpp | 12 ++++++++---- 5 files changed, 39 insertions(+), 6 deletions(-) diff --git a/Sankore_3.1.pro b/Sankore_3.1.pro index 6f361ea0..3005b8b1 100644 --- a/Sankore_3.1.pro +++ b/Sankore_3.1.pro @@ -4,8 +4,11 @@ TEMPLATE = app THIRD_PARTY_PATH=../Sankore-ThirdParty CONFIG += debug_and_release \ - no_include_pwd \ - link_prl + no_include_pwd + +linux-g++-64 { + CONFIG += link_prl +} VERSION_MAJ = 1 VERSION_MIN = 40 diff --git a/src/board/UBBoardController.h b/src/board/UBBoardController.h index 2b17670b..7d722152 100644 --- a/src/board/UBBoardController.h +++ b/src/board/UBBoardController.h @@ -140,6 +140,7 @@ class UBBoardController : public QObject void setBoxing(QRect displayRect); void setToolbarTexts(); static QUrl expandWidgetToTempDir(const QByteArray& pZipedData, const QString& pExtension = QString("wgt")); +// static QRect freeRectInGlobalPos() const {return ;} void setPageSize(QSize newSize); UBBoardPaletteManager *paletteManager() { diff --git a/src/board/UBBoardPaletteManager.cpp b/src/board/UBBoardPaletteManager.cpp index 35e8e1a5..db756be1 100644 --- a/src/board/UBBoardPaletteManager.cpp +++ b/src/board/UBBoardPaletteManager.cpp @@ -1027,3 +1027,27 @@ void UBBoardPaletteManager::stopDownloads() mRightPalette->removeTab(mpDownloadWidget->name()); } } + +QRect UBBoardPaletteManager::GetFreeRectGlobalCoords() const +{ + QPoint topLeft, bottomRight; + if (mLeftPalette) { + int x = mLeftPalette->getTabPaletteRect().topRight().x(); + int y = 0; + if (x || y) { + topLeft.setX(x); + topLeft.setY(y); + topLeft = mContainer->mapToGlobal(topLeft); + } + } + if (mRightPalette) { + int x = mRightPalette->getTabPaletteRect().topLeft().x(); + int y = mRightPalette->height(); + if (x || y) { + bottomRight.setX(x); + bottomRight.setY(y); + bottomRight = mContainer->mapToGlobal(bottomRight); + } + } + return QRect(topLeft, bottomRight); +} diff --git a/src/board/UBBoardPaletteManager.h b/src/board/UBBoardPaletteManager.h index 4cba1d4a..0dc4c2f9 100644 --- a/src/board/UBBoardPaletteManager.h +++ b/src/board/UBBoardPaletteManager.h @@ -65,6 +65,7 @@ class UBBoardPaletteManager : public QObject void changeMode(eUBDockPaletteWidgetMode newMode, bool isInit = false); void startDownloads(); void stopDownloads(); + QRect GetFreeRectGlobalCoords() const; signals: void connectToDocController(); diff --git a/src/board/UBLibraryController.cpp b/src/board/UBLibraryController.cpp index 12c0eb67..bd4b48b9 100644 --- a/src/board/UBLibraryController.cpp +++ b/src/board/UBLibraryController.cpp @@ -695,16 +695,20 @@ void UBLibraryController::addVideosToCurrentPage(const QList& videos) void UBLibraryController::addAudiosToCurrentPage(const QList& sounds) { - QPointF topLeftPos = visibleSceneRect().topLeft(); + QPointF centerPos = visibleSceneRect().center(); - QPointF pos = topLeftPos; + QPointF pos = centerPos; + + //move it a little higher for convenience + centerPos.setX(pos.x() - 200); + centerPos.setY(pos.y() - 100); foreach(const QUrl url, sounds) { mLastItemOffsetIndex++; mLastItemOffsetIndex = qMin(mLastItemOffsetIndex, 5); - pos = QPointF(topLeftPos.x() + 50 * mLastItemOffsetIndex, - topLeftPos.y() + 50 * mLastItemOffsetIndex); + pos = QPointF(centerPos.x() + 50 * mLastItemOffsetIndex, + centerPos.y() + 50 * mLastItemOffsetIndex); UBApplication::boardController->addAudio(url, false, pos); } } From b5a9d6469eb82f72a449a35f53d72764bab99ff7 Mon Sep 17 00:00:00 2001 From: Ivan Ilin Date: Wed, 28 Dec 2011 17:15:39 +0200 Subject: [PATCH 32/33] Sankore-316 --- src/board/UBBoardPaletteManager.cpp | 6 ++++++ src/gui/UBDockPalette.cpp | 10 +++++++++- src/gui/UBDockPalette.h | 8 ++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/board/UBBoardPaletteManager.cpp b/src/board/UBBoardPaletteManager.cpp index db756be1..483fbbac 100644 --- a/src/board/UBBoardPaletteManager.cpp +++ b/src/board/UBBoardPaletteManager.cpp @@ -743,6 +743,9 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is mLeftPalette->setVisible(true); mRightPalette->setVisible(true); +#ifdef Q_WS_WIN + mRightPalette->setAdditionalVOffset(0); +#endif if( !isInit ) containerResized(); @@ -772,6 +775,9 @@ void UBBoardPaletteManager::changeMode(eUBDockPaletteWidgetMode newMode, bool is mLeftPalette->setVisible(false); mRightPalette->setVisible(true); +#ifdef Q_WS_WIN + mRightPalette->setAdditionalVOffset(30); +#endif if( !isInit ) UBApplication::applicationController->uninotesController()->TransparentWidgetResized(); diff --git a/src/gui/UBDockPalette.cpp b/src/gui/UBDockPalette.cpp index 4822099f..ef6b0344 100644 --- a/src/gui/UBDockPalette.cpp +++ b/src/gui/UBDockPalette.cpp @@ -688,7 +688,7 @@ void UBDockPalette::moveTabs() } } - QPoint origin(width(), mHTab); + QPoint origin(width(), mHTab + mTabPalette->mVerticalOffset); switch (mOrientation) { case eUBDockOrientation_Left: @@ -732,6 +732,8 @@ void UBDockPalette::setVisible(bool visible) UBTabDockPalete::UBTabDockPalete(UBDockPalette *dockPalette, QWidget *parent) : QWidget(parent) , dock(dockPalette) + , mVerticalOffset(0) + , mFlotable(false) { int numTabs = dock->mTabWidgets.size(); resize(2 * dock->border(), (numTabs * TABSIZE) + qMax(numTabs - 1, 0) * dock->tabSpacing()); @@ -846,6 +848,12 @@ void UBTabDockPalete::mouseMoveEvent(QMouseEvent *event) if(dock->mCanResize && ((dock->mMousePressPos - p).manhattanLength() > QApplication::startDragDistance())) { + if (qAbs(dock->mMousePressPos.y() - p.y()) > 10 && mFlotable) { + qDebug() << "y differences" << dock->mMousePressPos.y() << p.y(); + mVerticalOffset += p.y() - dock->mMousePressPos.y(); + move(this->pos().x(), p.y()); + } + switch(dock->mOrientation) { case eUBDockOrientation_Left: diff --git a/src/gui/UBDockPalette.h b/src/gui/UBDockPalette.h index 0e00ad14..c89747fa 100644 --- a/src/gui/UBDockPalette.h +++ b/src/gui/UBDockPalette.h @@ -71,6 +71,8 @@ protected: private: UBDockPalette *dock; + int mVerticalOffset; + bool mFlotable; }; class UBDockPalette : public QWidget @@ -107,6 +109,12 @@ public: QVector GetWidgetsList() { return mRegisteredWidgets; } +public: + bool isTabFlotable() {return mTabPalette->mFlotable;} + void setTabFlotable(bool newFlotable) {mTabPalette->mFlotable = newFlotable;} + int getAdditionalVOffset() const {return mTabPalette->mVerticalOffset;} + void setAdditionalVOffset(int newOffset) {mTabPalette->mVerticalOffset = newOffset;} + public slots: void onShowTabWidget(const QString& widgetName); void onHideTabWidget(const QString& widgetName); From a3b8fa10bd05230aeadb8308ebe08ef051ae4b95 Mon Sep 17 00:00:00 2001 From: Ivan Ilin Date: Thu, 29 Dec 2011 19:31:10 +0200 Subject: [PATCH 33/33] Translation fixes --- resources/i18n/sankore_ar.ts | 4 +- resources/i18n/sankore_da.ts | 4 +- resources/i18n/sankore_de.ts | 4 +- resources/i18n/sankore_en.ts | 4 +- resources/i18n/sankore_en_UK.ts | 4 +- resources/i18n/sankore_es.ts | 4 +- resources/i18n/sankore_fr.ts | 6 +-- resources/i18n/sankore_fr_CH.ts | 6 +-- resources/i18n/sankore_it.ts | 4 +- resources/i18n/sankore_iw.ts | 4 +- resources/i18n/sankore_ja.ts | 4 +- resources/i18n/sankore_ko.ts | 4 +- resources/i18n/sankore_nb.ts | 4 +- resources/i18n/sankore_nl.ts | 4 +- resources/i18n/sankore_pl.ts | 4 +- resources/i18n/sankore_pt.ts | 4 +- resources/i18n/sankore_rm.ts | 4 +- resources/i18n/sankore_ro.ts | 4 +- resources/i18n/sankore_ru.ts | 74 +++++++++++++++++++-------------- resources/i18n/sankore_sv.ts | 4 +- resources/i18n/sankore_zh.ts | 4 +- src/board/UBBoardView.cpp | 2 - src/gui/UBTeacherBarWidget.cpp | 8 ++-- src/gui/UBTeacherBarWidget.h | 2 + 24 files changed, 90 insertions(+), 80 deletions(-) diff --git a/resources/i18n/sankore_ar.ts b/resources/i18n/sankore_ar.ts index 2cb1f7b1..74fe4073 100644 --- a/resources/i18n/sankore_ar.ts +++ b/resources/i18n/sankore_ar.ts @@ -1848,11 +1848,11 @@ Do you want to ignore these errors for this host? - Enseignant + Teacher - Élève + Student diff --git a/resources/i18n/sankore_da.ts b/resources/i18n/sankore_da.ts index 0cddc24e..4d380b25 100644 --- a/resources/i18n/sankore_da.ts +++ b/resources/i18n/sankore_da.ts @@ -1854,11 +1854,11 @@ Do you want to ignore these errors for this host? - Enseignant + Teacher - Élève + Student diff --git a/resources/i18n/sankore_de.ts b/resources/i18n/sankore_de.ts index cebd0c7e..96e093e7 100644 --- a/resources/i18n/sankore_de.ts +++ b/resources/i18n/sankore_de.ts @@ -1854,11 +1854,11 @@ Möchten Sie diese Fehler auf diesem Computer ignorieren? - Enseignant + Teacher - Élève + Student diff --git a/resources/i18n/sankore_en.ts b/resources/i18n/sankore_en.ts index 2b349206..19d36ecd 100644 --- a/resources/i18n/sankore_en.ts +++ b/resources/i18n/sankore_en.ts @@ -1848,11 +1848,11 @@ Do you want to ignore these errors for this host? - Enseignant + Teacher - Élève + Student diff --git a/resources/i18n/sankore_en_UK.ts b/resources/i18n/sankore_en_UK.ts index d9739ce0..c4eb8cbb 100644 --- a/resources/i18n/sankore_en_UK.ts +++ b/resources/i18n/sankore_en_UK.ts @@ -1848,11 +1848,11 @@ Do you want to ignore these errors for this host? - Enseignant + Teacher - Élève + Student diff --git a/resources/i18n/sankore_es.ts b/resources/i18n/sankore_es.ts index 0804a481..3ddd9826 100644 --- a/resources/i18n/sankore_es.ts +++ b/resources/i18n/sankore_es.ts @@ -1854,11 +1854,11 @@ Do you want to ignore these errors for this host? - Enseignant + Teacher - Élève + Student diff --git a/resources/i18n/sankore_fr.ts b/resources/i18n/sankore_fr.ts index 816e81b8..4d57becf 100644 --- a/resources/i18n/sankore_fr.ts +++ b/resources/i18n/sankore_fr.ts @@ -1856,11 +1856,11 @@ Voulez-vous ignorer les erreurs pour ce serveur? Action %0 - Enseignant + Teacher - Élève + Student @@ -1967,7 +1967,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour. Remind me later - + diff --git a/resources/i18n/sankore_fr_CH.ts b/resources/i18n/sankore_fr_CH.ts index 816e81b8..4d57becf 100644 --- a/resources/i18n/sankore_fr_CH.ts +++ b/resources/i18n/sankore_fr_CH.ts @@ -1856,11 +1856,11 @@ Voulez-vous ignorer les erreurs pour ce serveur? Action %0 - Enseignant + Teacher - Élève + Student @@ -1967,7 +1967,7 @@ Veuillez redémarrer l'application pour accéder aux documents mis à jour. Remind me later - + diff --git a/resources/i18n/sankore_it.ts b/resources/i18n/sankore_it.ts index 825bcc24..73e9cee4 100644 --- a/resources/i18n/sankore_it.ts +++ b/resources/i18n/sankore_it.ts @@ -1854,11 +1854,11 @@ Vuoi ignorare gli errori per questo host? - Enseignant + Teacher - Élève + Student diff --git a/resources/i18n/sankore_iw.ts b/resources/i18n/sankore_iw.ts index 9ce57b52..823f7fb8 100644 --- a/resources/i18n/sankore_iw.ts +++ b/resources/i18n/sankore_iw.ts @@ -1848,11 +1848,11 @@ Do you want to ignore these errors for this host? - Enseignant + Teacher - Élève + Student diff --git a/resources/i18n/sankore_ja.ts b/resources/i18n/sankore_ja.ts index 1a5038bc..ec77e051 100644 --- a/resources/i18n/sankore_ja.ts +++ b/resources/i18n/sankore_ja.ts @@ -1855,11 +1855,11 @@ Do you want to ignore these errors for this host? - Enseignant + Teacher - Élève + Student diff --git a/resources/i18n/sankore_ko.ts b/resources/i18n/sankore_ko.ts index a264e9d9..cce0a0de 100644 --- a/resources/i18n/sankore_ko.ts +++ b/resources/i18n/sankore_ko.ts @@ -1854,11 +1854,11 @@ Do you want to ignore these errors for this host? - Enseignant + Teacher - Élève + Student diff --git a/resources/i18n/sankore_nb.ts b/resources/i18n/sankore_nb.ts index 031ffb1b..ad7040d3 100644 --- a/resources/i18n/sankore_nb.ts +++ b/resources/i18n/sankore_nb.ts @@ -1849,11 +1849,11 @@ Do you want to ignore these errors for this host? - Enseignant + Teacher - Élève + Student diff --git a/resources/i18n/sankore_nl.ts b/resources/i18n/sankore_nl.ts index 6949a52c..af0cf6ce 100644 --- a/resources/i18n/sankore_nl.ts +++ b/resources/i18n/sankore_nl.ts @@ -1848,11 +1848,11 @@ Do you want to ignore these errors for this host? - Enseignant + Teacher - Élève + Student diff --git a/resources/i18n/sankore_pl.ts b/resources/i18n/sankore_pl.ts index 70663776..9f20715c 100644 --- a/resources/i18n/sankore_pl.ts +++ b/resources/i18n/sankore_pl.ts @@ -1855,11 +1855,11 @@ Czy chcesz ignorować te błędy dla tego hosta? - Enseignant + Teacher - Élève + Student diff --git a/resources/i18n/sankore_pt.ts b/resources/i18n/sankore_pt.ts index 6ea05ac5..cc80aa9e 100644 --- a/resources/i18n/sankore_pt.ts +++ b/resources/i18n/sankore_pt.ts @@ -1848,11 +1848,11 @@ Do you want to ignore these errors for this host? - Enseignant + Teacher - Élève + Student diff --git a/resources/i18n/sankore_rm.ts b/resources/i18n/sankore_rm.ts index b705e05a..b0345c77 100644 --- a/resources/i18n/sankore_rm.ts +++ b/resources/i18n/sankore_rm.ts @@ -1848,11 +1848,11 @@ Do you want to ignore these errors for this host? - Enseignant + Teacher - Élève + Student diff --git a/resources/i18n/sankore_ro.ts b/resources/i18n/sankore_ro.ts index a2aa70e0..013ffe24 100644 --- a/resources/i18n/sankore_ro.ts +++ b/resources/i18n/sankore_ro.ts @@ -1854,11 +1854,11 @@ Doriţi să ignoraţi aceste erori pentru acest host? - Enseignant + Teacher - Élève + Student diff --git a/resources/i18n/sankore_ru.ts b/resources/i18n/sankore_ru.ts index e42f1e8c..f1855b28 100644 --- a/resources/i18n/sankore_ru.ts +++ b/resources/i18n/sankore_ru.ts @@ -1,6 +1,6 @@ - + BlackoutWidget @@ -81,11 +81,11 @@ Tutorial - Учебное руководство + Учебник Stylus - Инструменты для ввода + Инструменты Ctrl+T @@ -109,7 +109,7 @@ Redo - Восстановить + Вернуть Ctrl+Y @@ -281,7 +281,7 @@ Show Desktop - Показать рабочий стол + Рабочий стол Show Computer Desktop @@ -757,7 +757,7 @@ Open the tutorial - Открыть учебное руководство + Открыть учебник Check Update @@ -976,7 +976,7 @@ Show the stylus palette - Показать панель элементов для ввода + Показать инструменты Show Board on Secondary Screen @@ -984,7 +984,7 @@ Show Desktop on Secondary Screen - Показать рабочий стол на втором экране + Показать раб. стол на втором экране @@ -1111,7 +1111,8 @@ Are you sure you want to remove %n page(s) from the selected document '%1'? - + + Вы уверены, что хотите удалить %n страниц из выбранного документа '%1'? @@ -1193,7 +1194,7 @@ UBDocumentTreeWidget %1 (copy) - %1 (копия) + %1 (копирование) Copying page %1/%2 @@ -1203,6 +1204,7 @@ %1 pages copied + @@ -1665,7 +1667,7 @@ Do you want to ignore these errors for this host? on your desktop ... - на вашем рабочем столе... + на вашем раб. столе... in folder %1 @@ -1780,23 +1782,23 @@ Do you want to ignore these errors for this host? UBTeacherBarWidget Title - Название + Название Phasis - + Тип урока Duration - + Длительность Equipment - + Оборудование Activity - + Участники @@ -1804,62 +1806,70 @@ Do you want to ignore these errors for this host? I discover - + Открытие I experiment - + Эксперименты I train myself - + Самостоятельно I play - + Игра I memorize - + Заметка Short - + Не долго Middle - + Средне Long - + Долго Alone - + Один By Group - + Группы All together - + Все вместе UBTeacherStudentAction Action %0 - + Действие %0 Enseignant - + Teacher Élève - + Student + + + Teacher + Учитель + + + Student + Студент @@ -1965,7 +1975,7 @@ Please reboot the application to access the updated documents. Remind me later - + Напомнить позже @@ -2506,7 +2516,7 @@ p, li { white-space: pre-wrap; } Stylus Palette - Панель инструментов для ввода + Инструменты Horizontal diff --git a/resources/i18n/sankore_sv.ts b/resources/i18n/sankore_sv.ts index adfa1a82..71b2bcbf 100644 --- a/resources/i18n/sankore_sv.ts +++ b/resources/i18n/sankore_sv.ts @@ -1854,11 +1854,11 @@ Vill du ignorera felen för den här värden? - Enseignant + Teacher - Élève + Student diff --git a/resources/i18n/sankore_zh.ts b/resources/i18n/sankore_zh.ts index 83979695..0d513289 100644 --- a/resources/i18n/sankore_zh.ts +++ b/resources/i18n/sankore_zh.ts @@ -1854,11 +1854,11 @@ Do you want to ignore these errors for this host? - Enseignant + Teacher - Élève + Student diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index dd8e47c1..d5ff09e6 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -12,8 +12,6 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ - - #include "UBBoardView.h" #include diff --git a/src/gui/UBTeacherBarWidget.cpp b/src/gui/UBTeacherBarWidget.cpp index c3986972..52c21bb2 100644 --- a/src/gui/UBTeacherBarWidget.cpp +++ b/src/gui/UBTeacherBarWidget.cpp @@ -357,8 +357,8 @@ UBTeacherStudentAction::UBTeacherStudentAction(int actionNumber, QWidget *parent mpTeacherLayout = new QHBoxLayout(); //TODO: I'm not able to translate this string using the normal way *qm file why? - //mpTeacherLabel = new QLabel(tr("Teacher"), this); - mpTeacherLabel = new QLabel(tr("Enseignant"), this); + mpTeacherLabel = new QLabel(tr("Teacher"), this); +// mpTeacherLabel = new QLabel(tr("Enseignant"), this); mpTeacherLabel->setAlignment(Qt::AlignTop); mpTeacher = new QTextEdit(this); mpTeacher->setObjectName("TeacherStudentBox"); @@ -368,8 +368,8 @@ UBTeacherStudentAction::UBTeacherStudentAction(int actionNumber, QWidget *parent mpLayout->addLayout(mpTeacherLayout, 1); mpStudentLayout = new QHBoxLayout(); -// mpStudentLabel = new QLabel(tr("Student"), this); - mpStudentLabel = new QLabel(tr("Élève"), this); + mpStudentLabel = new QLabel(tr("Student"), this); +// mpStudentLabel = new QLabel(tr("Élève"), this); mpStudentLabel->setAlignment(Qt::AlignTop); mpStudent = new QTextEdit(this); mpStudent->setObjectName("TeacherStudentBox"); diff --git a/src/gui/UBTeacherBarWidget.h b/src/gui/UBTeacherBarWidget.h index 3f18bcbe..a021027f 100644 --- a/src/gui/UBTeacherBarWidget.h +++ b/src/gui/UBTeacherBarWidget.h @@ -15,6 +15,8 @@ class UBTeacherStudentAction : public QWidget { + Q_OBJECT + public: UBTeacherStudentAction(int actionNumber, QWidget* parent=0, const char* name="UBTeacherStudentAction"); ~UBTeacherStudentAction();