diff --git a/src/core/Commands.cpp b/src/core/Commands.cpp
index 914c5c89..263d52bc 100644
--- a/src/core/Commands.cpp
+++ b/src/core/Commands.cpp
@@ -33,7 +33,7 @@ AddPaintCommand::AddPaintCommand(MainWindow *mainWindow, uid paintId, const QIco
_icon(icon),
_name(name)
{
- setText(QObject::tr("Add paint"));
+ setText(QObject::tr("Add source"));
}
void AddPaintCommand::undo()
@@ -59,7 +59,7 @@ AddMappingCommand::AddMappingCommand(MainWindow *mainWindow, uid mappingId, QUnd
_mainWindow(mainWindow),
_mappingId(mappingId)
{
- setText(QObject::tr("Add mapping"));
+ setText(QObject::tr("Add layer"));
}
void AddMappingCommand::undo()
@@ -84,7 +84,7 @@ void AddMappingCommand::redo()
DuplicateMappingCommand::DuplicateMappingCommand(MainWindow *mainWindow, uid cloneId, QUndoCommand *parent):
AddMappingCommand(mainWindow, cloneId, parent)
{
- setText(QObject::tr("Duplicate mapping"));
+ setText(QObject::tr("Duplicate layer"));
}
TransformShapeCommand::TransformShapeCommand(MapperGLCanvas* canvas, TransformShapeOption option, QUndoCommand* parent)
@@ -148,7 +148,7 @@ int MoveVertexCommand::id() const { return (_option == STEP ? CMD_KEY_MOVE_VERTE
void MoveVertexCommand::_doTransform(MShape::ptr shape)
{
- shape->setVertex(_movedVertex, _vertexPosition);
+ shape->setVertex(_movedVertex, _vertexPosition);
}
bool MoveVertexCommand::mergeWith(const QUndoCommand* other)
@@ -171,7 +171,7 @@ bool MoveVertexCommand::mergeWith(const QUndoCommand* other)
ScaleRotateShapeCommand::ScaleRotateShapeCommand(MapperGLCanvas* canvas, TransformShapeOption option, int activeVertex, const QPointF &point, const QPointF& initialPositionPoint, const MShape::ptr& initialShape, QUndoCommand *parent)
: TransformShapeCommand(canvas, option, parent),
_movedVertex(activeVertex),
- _initialShape(initialShape)
+ _initialShape(initialShape)
{
setText(QObject::tr("Scale and rotate shape"));
@@ -186,7 +186,7 @@ ScaleRotateShapeCommand::ScaleRotateShapeCommand(MapperGLCanvas* canvas, Transfo
// Compute rotation.
qreal rotation = currentVector.angleTo(initialVector);
- // Create transform object.
+ // Create transform object.
// transform.rotate(rotation);
_transform.translate(+center.x(), +center.y());
_transform.rotate(rotation);
@@ -214,10 +214,10 @@ bool ScaleRotateShapeCommand::mergeWith(const QUndoCommand* other)
if (cmd->_movedVertex != _movedVertex)
return false;
- _option = cmd->_option;
+ _option = cmd->_option;
_transform = cmd->_transform;
- return true;
+ return true;
}
@@ -255,7 +255,7 @@ RemovePaintCommand::RemovePaintCommand(MainWindow *mainWindow, uid paintId, QUnd
_paintId(paintId),
_paintMappings()
{
- setText(QObject::tr("Remove paint"));
+ setText(QObject::tr("Remove media"));
}
void RemovePaintCommand::undo()
@@ -293,7 +293,7 @@ DeleteMappingCommand::DeleteMappingCommand(MainWindow *mainWindow, uid mappingId
_mainWindow(mainWindow),
_mappingId(mappingId)
{
- setText(QObject::tr("Delete mapping"));
+ setText(QObject::tr("Delete layer"));
}
void DeleteMappingCommand::undo()
diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp
index 0a0a34b6..1c9fadbb 100644
--- a/src/gui/MainWindow.cpp
+++ b/src/gui/MainWindow.cpp
@@ -772,29 +772,6 @@ void MainWindow::about()
{
// Stop video playback to avoid lags. XXX Hack
pause(false);
-
-// // Pop-up about dialog.
-// QMessageBox::about(this, tr("About MapMap"),
-// tr("
%1
"
-// "Copyright © 2013 %2.
"
-// "MapMap is a free software for video mapping.
"
-// "Projection mapping, also known as video mapping and spatial augmented reality, "
-// "is a projection technology used to turn objects, often irregularly shaped, into "
-// "a display surface for video projection. These objects may be complex industrial "
-// "landscapes, such as buildings. By using specialized software, a two or three "
-// "dimensional object is spatially mapped on the virtual program which mimics the "
-// "real environment it is to be projected on. The software can interact with a "
-// "projector to fit any desired image onto the surface of that object. This "
-// "technique is used by artists and advertisers alike who can add extra dimensions, "
-// "optical illusions, and notions of movement onto previously static objects. The "
-// "video is commonly combined with, or triggered by, audio to create an "
-// "audio-visual narrative."
-// "This project was made possible by the support of the International Organization of "
-// "La Francophonie.
"
-// "http://mapmap.info
"
-// "http://www.francophonie.org
"
-// ).arg(MM::VERSION, MM::COPYRIGHT_OWNERS));
-
_aboutDialog = new AboutDialog(this);
_aboutDialog->setAttribute(Qt::WA_DeleteOnClose); // Important for ressource management
_aboutDialog->show();
@@ -811,8 +788,8 @@ void MainWindow::updateStatusBar()
else
mousePosLabel->setText(""); // Otherwise set empty text.
currentMessageLabel->setText(statusBar()->currentMessage());
- sourceZoomLabel->setText("Source: " + QString::number(int(sourceCanvas->getZoomFactor() * 100)).append(QChar('%')));
- destinationZoomLabel->setText("Destination: " + QString::number(int(destinationCanvas->getZoomFactor() * 100)).append(QChar('%')));
+ sourceZoomLabel->setText("Input Editor: " + QString::number(int(sourceCanvas->getZoomFactor() * 100)).append(QChar('%')));
+ destinationZoomLabel->setText("Output Editor: " + QString::number(int(destinationCanvas->getZoomFactor() * 100)).append(QChar('%')));
lastActionLabel->setText(undoStack->text(undoStack->count() - 1));
}
@@ -939,7 +916,7 @@ void MainWindow::deletePaintItem()
}
else
{
- qCritical() << "No selected paint" << endl;
+ qCritical() << "No selected source" << endl;
}
}
@@ -1398,7 +1375,7 @@ void MainWindow::deletePaint(uid paintId, bool replace)
{
if (replace == false) {
int r = QMessageBox::warning(this, tr("MapMap"),
- tr("Remove this paint and all its associated mappings?"),
+ tr("Remove this source and all its associated layers?"),
QMessageBox::Ok | QMessageBox::Cancel);
if (r == QMessageBox::Ok)
{
@@ -1468,7 +1445,7 @@ void MainWindow::createLayout()
sourceCanvas->setMinimumSize(CANVAS_MINIMUM_WIDTH, CANVAS_MINIMUM_HEIGHT);
sourceCanvasToolbar = new MapperGLCanvasToolbar(sourceCanvas, this);
- sourceCanvasToolbar->setToolbarTitle(tr("Source"));
+ sourceCanvasToolbar->setToolbarTitle(tr("Input Editor"));
QVBoxLayout* sourceLayout = new QVBoxLayout;
sourceLayout->setContentsMargins(0, 0, 0, 0);
sourceLayout->setSpacing(0);
@@ -1484,7 +1461,7 @@ void MainWindow::createLayout()
destinationCanvas->setMinimumSize(CANVAS_MINIMUM_WIDTH, CANVAS_MINIMUM_HEIGHT);
destinationCanvasToolbar = new MapperGLCanvasToolbar(destinationCanvas, this);
- destinationCanvasToolbar->setToolbarTitle(tr("Destination"));
+ destinationCanvasToolbar->setToolbarTitle(tr("Output Editor"));
QVBoxLayout* destinationLayout = new QVBoxLayout;
destinationLayout->setContentsMargins(0, 0, 0, 0);
destinationLayout->setSpacing(0);
@@ -1530,8 +1507,8 @@ void MainWindow::createLayout()
// Content tab.
contentTab = new QTabWidget;
- contentTab->addTab(paintSplitter, QIcon(":/add-video"), tr("Paints"));
- contentTab->addTab(mappingSplitter, QIcon(":/add-mesh"), tr("Mappings"));
+ contentTab->addTab(paintSplitter, QIcon(":/add-video"), tr("Library"));
+ contentTab->addTab(mappingSplitter, QIcon(":/add-mesh"), tr("Layers"));
canvasSplitter = new QSplitter(Qt::Vertical);
canvasSplitter->addWidget(sourcePanel);
@@ -1696,9 +1673,9 @@ void MainWindow::createActions()
connect(aboutAction, SIGNAL(triggered()), this, SLOT(about()));
// Duplicate.
- cloneMappingAction = new QAction(tr("Duplicate Mapping"), this);
+ cloneMappingAction = new QAction(tr("Duplicate Layer"), this);
cloneMappingAction->setShortcut(Qt::CTRL + Qt::Key_D);
- cloneMappingAction->setToolTip(tr("Duplicate mapping item"));
+ cloneMappingAction->setToolTip(tr("Duplicate layer item"));
cloneMappingAction->setIconVisibleInMenu(false);
cloneMappingAction->setEnabled(false);
cloneMappingAction->setShortcutContext(Qt::ApplicationShortcut);
@@ -1706,9 +1683,9 @@ void MainWindow::createActions()
connect(cloneMappingAction, SIGNAL(triggered()), this, SLOT(duplicateMappingItem()));
// Delete mapping.
- deleteMappingAction = new QAction(tr("Delete Mapping"), this);
+ deleteMappingAction = new QAction(tr("Delete Layer"), this);
deleteMappingAction->setShortcut(QKeySequence::Delete);
- deleteMappingAction->setToolTip(tr("Delete mapping item"));
+ deleteMappingAction->setToolTip(tr("Delete layer item"));
deleteMappingAction->setIconVisibleInMenu(false);
deleteMappingAction->setEnabled(false);
deleteMappingAction->setShortcutContext(Qt::ApplicationShortcut);
@@ -1716,9 +1693,9 @@ void MainWindow::createActions()
connect(deleteMappingAction, SIGNAL(triggered()), this, SLOT(deleteMappingItem()));
// Rename mapping.
- renameMappingAction = new QAction(tr("Rename Mapping"), this);
+ renameMappingAction = new QAction(tr("Rename Layer"), this);
renameMappingAction->setShortcut(Qt::Key_F2);
- renameMappingAction->setToolTip(tr("Rename mapping item"));
+ renameMappingAction->setToolTip(tr("Rename layer item"));
renameMappingAction->setIconVisibleInMenu(false);
renameMappingAction->setEnabled(false);
renameMappingAction->setShortcutContext(Qt::ApplicationShortcut);
@@ -1726,8 +1703,8 @@ void MainWindow::createActions()
connect(renameMappingAction, SIGNAL(triggered()), this, SLOT(renameMappingItem()));
// Lock mapping.
- mappingLockedAction = new QAction(tr("Lock Mapping"), this);
- mappingLockedAction->setToolTip(tr("Lock mapping item"));
+ mappingLockedAction = new QAction(tr("Lock Layer"), this);
+ mappingLockedAction->setToolTip(tr("Lock layer item"));
mappingLockedAction->setIconVisibleInMenu(false);
mappingLockedAction->setCheckable(true);
mappingLockedAction->setChecked(false);
@@ -1737,8 +1714,8 @@ void MainWindow::createActions()
connect(mappingLockedAction, SIGNAL(triggered(bool)), this, SLOT(setMappingItemLocked(bool)));
// Hide mapping.
- mappingHideAction = new QAction(tr("Hide Mapping"), this);
- mappingHideAction->setToolTip(tr("Hide mapping item"));
+ mappingHideAction = new QAction(tr("Hide Layer"), this);
+ mappingHideAction->setToolTip(tr("Hide layer item"));
mappingHideAction->setIconVisibleInMenu(false);
mappingHideAction->setCheckable(true);
mappingHideAction->setChecked(false);
@@ -1748,8 +1725,8 @@ void MainWindow::createActions()
connect(mappingHideAction, SIGNAL(triggered(bool)), this, SLOT(setMappingItemHide(bool)));
// Solo mapping.
- mappingSoloAction = new QAction(tr("Solo Mapping"), this);
- mappingSoloAction->setToolTip(tr("solo mapping item"));
+ mappingSoloAction = new QAction(tr("Solo Layer"), this);
+ mappingSoloAction->setToolTip(tr("solo layer item"));
mappingSoloAction->setIconVisibleInMenu(false);
mappingSoloAction->setCheckable(true);
mappingSoloAction->setChecked(false);
@@ -1759,9 +1736,9 @@ void MainWindow::createActions()
connect(mappingSoloAction, SIGNAL(triggered(bool)), this, SLOT(setMappingItemSolo(bool)));
// Delete paint.
- deletePaintAction = new QAction(tr("Delete Paint"), this);
+ deletePaintAction = new QAction(tr("Delete Source"), this);
//deletePaintAction->setShortcut(tr("CTRL+DEL"));
- deletePaintAction->setToolTip(tr("Delete paint item"));
+ deletePaintAction->setToolTip(tr("Delete source item"));
deletePaintAction->setIconVisibleInMenu(false);
deletePaintAction->setEnabled(false);
deletePaintAction->setShortcutContext(Qt::ApplicationShortcut);
@@ -1769,9 +1746,9 @@ void MainWindow::createActions()
connect(deletePaintAction, SIGNAL(triggered()), this, SLOT(deletePaintItem()));
// Rename paint.
- renamePaintAction = new QAction(tr("Rename Paint"), this);
+ renamePaintAction = new QAction(tr("Rename Source"), this);
//renamePaintAction->setShortcut(Qt::Key_F2);
- renamePaintAction->setToolTip(tr("Rename paint item"));
+ renamePaintAction->setToolTip(tr("Rename source item"));
renamePaintAction->setIconVisibleInMenu(false);
renamePaintAction->setEnabled(false);
renamePaintAction->setShortcutContext(Qt::ApplicationShortcut);
@@ -1789,10 +1766,10 @@ void MainWindow::createActions()
connect(preferencesAction, SIGNAL(triggered()), _preferenceDialog, SLOT(exec()));
// Add mesh.
- addMeshAction = new QAction(tr("Add &Mesh"), this);
+ addMeshAction = new QAction(tr("Add &Mesh Layer"), this);
addMeshAction->setShortcut(Qt::CTRL + Qt::Key_M);
addMeshAction->setIcon(QIcon(":/add-mesh"));
- addMeshAction->setToolTip(tr("Add mesh"));
+ addMeshAction->setToolTip(tr("Add mesh layer"));
addMeshAction->setIconVisibleInMenu(false);
addMeshAction->setShortcutContext(Qt::ApplicationShortcut);
addAction(addMeshAction);
@@ -1800,10 +1777,10 @@ void MainWindow::createActions()
addMeshAction->setEnabled(false);
// Add triangle.
- addTriangleAction = new QAction(tr("Add &Triangle"), this);
+ addTriangleAction = new QAction(tr("Add &Triangle Layer"), this);
addTriangleAction->setShortcut(Qt::CTRL + Qt::Key_T);
addTriangleAction->setIcon(QIcon(":/add-triangle"));
- addTriangleAction->setToolTip(tr("Add triangle"));
+ addTriangleAction->setToolTip(tr("Add triangle layer"));
addTriangleAction->setIconVisibleInMenu(false);
addTriangleAction->setShortcutContext(Qt::ApplicationShortcut);
addAction(addTriangleAction);
@@ -1811,10 +1788,10 @@ void MainWindow::createActions()
addTriangleAction->setEnabled(false);
// Add ellipse.
- addEllipseAction = new QAction(tr("Add &Ellipse"), this);
+ addEllipseAction = new QAction(tr("Add &Ellipse Layer"), this);
addEllipseAction->setShortcut(Qt::CTRL + Qt::Key_E);
addEllipseAction->setIcon(QIcon(":/add-ellipse"));
- addEllipseAction->setToolTip(tr("Add ellipse"));
+ addEllipseAction->setToolTip(tr("Add ellipse layer"));
addEllipseAction->setIconVisibleInMenu(false);
addEllipseAction->setShortcutContext(Qt::ApplicationShortcut);
addAction(addEllipseAction);
@@ -1890,10 +1867,10 @@ void MainWindow::createActions()
connect(displayControlsAction, SIGNAL(toggled(bool)), outputWindow, SLOT(setCanvasDisplayCrosshair(bool)));
// Toggle display of canvas controls.
- displayPaintControlsAction = new QAction(tr("&Display Controls of Mappings of a Paint"), this);
+ displayPaintControlsAction = new QAction(tr("&Display Controls of Layers of a Source"), this);
//displayPaintControlsAction->setShortcut(Qt::ALT + Qt::Key_C);
displayPaintControlsAction->setIcon(QIcon(":/control-points"));
- displayPaintControlsAction->setToolTip(tr("Display all canvas controls related to current paint"));
+ displayPaintControlsAction->setToolTip(tr("Display all canvas controls related to current source"));
displayPaintControlsAction->setIconVisibleInMenu(false);
displayPaintControlsAction->setCheckable(true);
displayPaintControlsAction->setChecked(_displayPaintControls);
@@ -1977,17 +1954,17 @@ void MainWindow::createActions()
connect(mainViewAction, SIGNAL(triggered(bool)), canvasSplitter->widget(0), SLOT(setVisible(bool)));
connect(mainViewAction, SIGNAL(triggered(bool)), canvasSplitter->widget(1), SLOT(setVisible(bool)));
// Source Only
- sourceViewAction = new QAction(tr("Source Layout"), this);
+ sourceViewAction = new QAction(tr("Input editor Layout"), this);
sourceViewAction->setCheckable(true);
sourceViewAction->setShortcut(Qt::CTRL + Qt::Key_2);
- sourceViewAction->setToolTip(tr("Switch to the Source layout."));
+ sourceViewAction->setToolTip(tr("Switch to the Input editor Layout."));
connect(sourceViewAction, SIGNAL(triggered(bool)), canvasSplitter->widget(0), SLOT(setVisible(bool)));
connect(sourceViewAction, SIGNAL(triggered(bool)), canvasSplitter->widget(1), SLOT(setHidden(bool)));
// Destination Only
- destViewAction = new QAction(tr("Destination Layout"), this);
+ destViewAction = new QAction(tr("Output Editor Layout"), this);
destViewAction->setCheckable(true);
destViewAction->setShortcut(Qt::CTRL + Qt::Key_3);
- destViewAction->setToolTip(tr("Switch to the Destination layout."));
+ destViewAction->setToolTip(tr("Switch to the Output Editors Layout."));
connect(destViewAction, SIGNAL(triggered(bool)), canvasSplitter->widget(0), SLOT(setHidden(bool)));
connect(destViewAction, SIGNAL(triggered(bool)), canvasSplitter->widget(1), SLOT(setVisible(bool)));
// Groups all actions
diff --git a/src/gui/MappingGui.cpp b/src/gui/MappingGui.cpp
index fe4a7f42..25b6d36d 100644
--- a/src/gui/MappingGui.cpp
+++ b/src/gui/MappingGui.cpp
@@ -38,7 +38,7 @@ MappingGui::MappingGui(Mapping::ptr mapping)
_propertyBrowser->setFactoryForManager(_variantManager, _variantFactory);
- _paintEnumManager = new QtEnumPropertyManager(this);
+ _paintEnumManager = new QtEnumPropertyManager(this);
// Mapping UID.
_idItem = _variantManager->addProperty(QVariant::Int, QObject::tr("ID"));
@@ -54,9 +54,9 @@ MappingGui::MappingGui(Mapping::ptr mapping)
_opacityItem->setValue(_mapping->getOpacity()*100.0);
_propertyBrowser->addProperty(_opacityItem);
- _paintItem = _variantManager->addProperty(QtVariantPropertyManager::enumTypeId(), "Paint");
+ _paintItem = _variantManager->addProperty(QtVariantPropertyManager::enumTypeId(), "Source");
_propertyBrowser->addProperty(_paintItem);
- updatePaints();
+ updatePaints();
// Output shape.
_outputItem = _variantManager->addProperty(QtVariantPropertyManager::groupTypeId(),
@@ -85,15 +85,15 @@ void MappingGui::setValue(QtProperty* property, const QVariant& value)
emit valueChanged();
}
}
- else if (property == _paintItem)
- {
- int paintIndex = value.toInt();
- Paint::ptr newPaint = MainWindow::window()->getMappingManager().getPaint(paintIndex);
- if (newPaint != _mapping->getPaint() && _mapping->paintIsCompatible(newPaint)) {
- _mapping->setPaint(newPaint);
- emit valueChanged();
- }
- }
+ else if (property == _paintItem)
+ {
+ int paintIndex = value.toInt();
+ Paint::ptr newPaint = MainWindow::window()->getMappingManager().getPaint(paintIndex);
+ if (newPaint != _mapping->getPaint() && _mapping->paintIsCompatible(newPaint)) {
+ _mapping->setPaint(newPaint);
+ emit valueChanged();
+ }
+ }
else
{
std::map >::iterator it = _propertyToVertex.find(property);
@@ -191,7 +191,7 @@ MeshColorMappingGui::MeshColorMappingGui(Mapping::ptr mapping)
// Add mesh sub property.
QSharedPointer mesh = qSharedPointerCast(_mapping->getShape());
- _meshItem = _variantManager->addProperty(QVariant::Size, QObject::tr("Dimensions"));
+ _meshItem = _variantManager->addProperty(QVariant::Size, QObject::tr("Mesh Subdivisions"));
_meshItem->setValue(QSize(mesh->nColumns(), mesh->nRows()));
_meshItem->setAttribute("minimum", QSize(2,2));
_propertyBrowser->insertProperty(_meshItem, _paintItem); // insert at the beginning
@@ -227,7 +227,7 @@ EllipseColorMappingGui::EllipseColorMappingGui(Mapping::ptr mapping) : ColorMapp
// : ColorMappingGui(mapping) {
// // Add mesh sub property.
// Mesh* mesh = (Mesh*)mapping->getShape().get();
-// _meshItem = _variantManager->addProperty(QVariant::Size, QObject::tr("Dimensions"));
+// _meshItem = _variantManager->addProperty(QVariant::Size, QObject::tr("Mesh Subdivisions"));
// _meshItem->setValue(QSize(mesh->nColumns(), mesh->nRows()));
// _topItem->insertSubProperty(_meshItem, 0); // insert at the beginning
//}
@@ -420,8 +420,9 @@ MeshTextureMappingGui::MeshTextureMappingGui(QSharedPointer mapp
// Add mesh sub property.
QSharedPointer mesh = qSharedPointerCast(_mapping->getShape());
- _meshItem = _variantManager->addProperty(QVariant::Size, QObject::tr("Dimensions"));
+ _meshItem = _variantManager->addProperty(QVariant::Size, QObject::tr("Mesh Subdivisions"));
_meshItem->setValue(QSize(mesh->nColumns(), mesh->nRows()));
+ _meshItem->
_meshItem->setAttribute("minimum", QSize(2,2));
_propertyBrowser->insertProperty(_meshItem, _paintItem); // insert at the beginning
}
diff --git a/src/gui/PaintGui.cpp b/src/gui/PaintGui.cpp
index 7cec7366..2491b28e 100644
--- a/src/gui/PaintGui.cpp
+++ b/src/gui/PaintGui.cpp
@@ -167,7 +167,7 @@ VideoGui::VideoGui(Paint::ptr paint)
Q_CHECK_PTR(media);
_mediaFileItem = _variantManager->addProperty(VariantManager::filePathTypeId(),
- tr("Video file"));
+ tr("Source"));
_mediaFileItem->setAttribute("filter", tr("Video files (%1);;All files (*)").arg(MM::VIDEO_FILES_FILTER));
_mediaFileItem->setValue(media->getUri());
diff --git a/src/gui/PreferenceDialog.cpp b/src/gui/PreferenceDialog.cpp
index 7c86ba3b..58e87643 100644
--- a/src/gui/PreferenceDialog.cpp
+++ b/src/gui/PreferenceDialog.cpp
@@ -354,7 +354,7 @@ void PreferenceDialog::createPreferencesList()
QListWidgetItem *interfaceItem = new QListWidgetItem(QIcon(":/pref-interface"), tr("Interface"));
// Mapping & Shape Item
- QListWidgetItem *shapeItem = new QListWidgetItem(QIcon(":/control-points"), tr("Mappings"));
+ QListWidgetItem *shapeItem = new QListWidgetItem(QIcon(":/control-points"), tr("Layers"));
// Output Item
QListWidgetItem *outputItem = new QListWidgetItem(QIcon(":/output-window"), tr("Output"));