imge cropping added
This commit is contained in:
parent
7b68bb10b5
commit
414867f13e
18 changed files with 1152 additions and 226 deletions
|
@ -20,6 +20,7 @@
|
|||
#include "ui_ImportDialog.h"
|
||||
#include "SidebarGenerator.h"
|
||||
#include "StandardPaths.h"
|
||||
#include "imagecropper.h"
|
||||
#include "AppEnv.h"
|
||||
#include "config.h"
|
||||
#include <QStringBuilder>
|
||||
|
@ -108,6 +109,7 @@ ImportDialog::ImportDialog(QString profileName, QWidget *parent) :
|
|||
// Options menu
|
||||
optionsMenu = new QMenu(this);
|
||||
optionsMenu->addAction(tr("&Import new Picture..."), this, SLOT(importNewPicture()));
|
||||
optionsMenu->addAction(tr("&Crop Picture..."), this, SLOT(cropPicture()));
|
||||
ui->cmdOptions->setMenu(optionsMenu);
|
||||
|
||||
setMaximumSize(sizeHint());
|
||||
|
@ -255,6 +257,48 @@ void ImportDialog::processWatermark(QPainter *snapmaticPainter)
|
|||
snapmaticPainter->drawImage(0, 0, textWatermark);
|
||||
}
|
||||
|
||||
void ImportDialog::cropPicture()
|
||||
{
|
||||
qreal screenRatio = AppEnv::screenRatio();
|
||||
|
||||
QDialog cropDialog(this);
|
||||
cropDialog.setWindowTitle(tr("Crop Picture..."));
|
||||
cropDialog.setWindowFlags(cropDialog.windowFlags()^Qt::WindowContextHelpButtonHint);
|
||||
cropDialog.setModal(true);
|
||||
|
||||
QVBoxLayout cropLayout;
|
||||
cropLayout.setContentsMargins(0, 0, 0, 0);
|
||||
cropLayout.setSpacing(0);
|
||||
cropDialog.setLayout(&cropLayout);
|
||||
|
||||
ImageCropper imageCropper(&cropDialog);
|
||||
imageCropper.setBackgroundColor(Qt::black);
|
||||
imageCropper.setCroppingRectBorderColor(QColor(255, 255, 255, 127));
|
||||
imageCropper.setImage(QPixmap::fromImage(workImage, Qt::AutoColor));
|
||||
imageCropper.setProportion(QSize(1, 1));
|
||||
imageCropper.setFixedSize(workImage.size());
|
||||
cropLayout.addWidget(&imageCropper);
|
||||
|
||||
QHBoxLayout buttonLayout;
|
||||
cropLayout.addLayout(&buttonLayout);
|
||||
|
||||
QPushButton cropButton(&cropDialog);
|
||||
cropButton.setMinimumSize(0, 40 * screenRatio);
|
||||
cropButton.setText(tr("&Crop"));
|
||||
cropButton.setToolTip(tr("Crop Picture"));
|
||||
QObject::connect(&cropButton, SIGNAL(clicked(bool)), &cropDialog, SLOT(accept()));
|
||||
|
||||
buttonLayout.addWidget(&cropButton);
|
||||
|
||||
cropDialog.show();
|
||||
cropDialog.setFixedSize(cropDialog.sizeHint());
|
||||
if (cropDialog.exec() == true)
|
||||
{
|
||||
QImage *croppedImage = new QImage(imageCropper.cropImage().toImage());
|
||||
setImage(croppedImage);
|
||||
}
|
||||
}
|
||||
|
||||
void ImportDialog::importNewPicture()
|
||||
{
|
||||
QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
|
||||
|
|
|
@ -40,6 +40,7 @@ public:
|
|||
|
||||
private slots:
|
||||
void processImage();
|
||||
void cropPicture();
|
||||
void importNewPicture();
|
||||
void on_cbIgnore_toggled(bool checked);
|
||||
void on_cbAvatar_toggled(bool checked);
|
||||
|
|
|
@ -307,6 +307,9 @@
|
|||
<property name="text">
|
||||
<string>&Options</string>
|
||||
</property>
|
||||
<property name="autoDefault">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
|
|
519
anpro/imagecropper.cpp
Normal file
519
anpro/imagecropper.cpp
Normal file
|
@ -0,0 +1,519 @@
|
|||
/*****************************************************************************
|
||||
* ImageCropper Qt Widget for cropping images
|
||||
* Copyright (C) 2013 Dimka Novikov, to@dimkanovikov.pro
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "imagecropper.h"
|
||||
|
||||
#include <QMouseEvent>
|
||||
#include <QPainter>
|
||||
|
||||
namespace {
|
||||
static const QSize WIDGET_MINIMUM_SIZE(470, 470);
|
||||
}
|
||||
|
||||
ImageCropper::ImageCropper(QWidget* parent) :
|
||||
QWidget(parent),
|
||||
pimpl(new ImageCropperPrivate)
|
||||
{
|
||||
setMinimumSize(WIDGET_MINIMUM_SIZE);
|
||||
setMouseTracking(true);
|
||||
}
|
||||
|
||||
ImageCropper::~ImageCropper()
|
||||
{
|
||||
delete pimpl;
|
||||
}
|
||||
|
||||
void ImageCropper::setImage(const QPixmap& _image)
|
||||
{
|
||||
pimpl->imageForCropping = _image;
|
||||
update();
|
||||
}
|
||||
|
||||
void ImageCropper::setBackgroundColor(const QColor& _backgroundColor)
|
||||
{
|
||||
pimpl->backgroundColor = _backgroundColor;
|
||||
update();
|
||||
}
|
||||
|
||||
void ImageCropper::setCroppingRectBorderColor(const QColor& _borderColor)
|
||||
{
|
||||
pimpl->croppingRectBorderColor = _borderColor;
|
||||
update();
|
||||
}
|
||||
|
||||
void ImageCropper::setProportion(const QSizeF& _proportion)
|
||||
{
|
||||
// Пропорции хранятся в коэффициентах приращения сторон
|
||||
// Таким образом, при изменении размера области выделения,
|
||||
// размеры сторон изменяются на размер зависящий от
|
||||
// коэффициентов приращения.
|
||||
|
||||
// Сохраним пропорциональную зависимость области выделения в коэффициентах приращения сторон
|
||||
if (pimpl->proportion != _proportion) {
|
||||
pimpl->proportion = _proportion;
|
||||
// ... расчитаем коэффициенты
|
||||
float heightDelta = (float)_proportion.height() / _proportion.width();
|
||||
float widthDelta = (float)_proportion.width() / _proportion.height();
|
||||
// ... сохраним коэффициенты
|
||||
pimpl->deltas.setHeight(heightDelta);
|
||||
pimpl->deltas.setWidth(widthDelta);
|
||||
}
|
||||
|
||||
// Обновим пропорции области выделения
|
||||
if ( pimpl->isProportionFixed ) {
|
||||
float croppintRectSideRelation =
|
||||
(float)pimpl->croppingRect.width() / pimpl->croppingRect.height();
|
||||
float proportionSideRelation =
|
||||
(float)pimpl->proportion.width() / pimpl->proportion.height();
|
||||
// Если область выделения не соответствует необходимым пропорциям обновим её
|
||||
if (croppintRectSideRelation != proportionSideRelation) {
|
||||
bool widthShotrerThenHeight =
|
||||
pimpl->croppingRect.width() < pimpl->croppingRect.height();
|
||||
// ... установим размер той стороны, что длиннее
|
||||
if (widthShotrerThenHeight) {
|
||||
pimpl->croppingRect.setHeight(
|
||||
pimpl->croppingRect.width() * pimpl->deltas.height());
|
||||
} else {
|
||||
pimpl->croppingRect.setWidth(
|
||||
pimpl->croppingRect.height() * pimpl->deltas.width());
|
||||
}
|
||||
// ... перерисуем виджет
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void ImageCropper::setProportionFixed(const bool _isFixed)
|
||||
{
|
||||
if (pimpl->isProportionFixed != _isFixed) {
|
||||
pimpl->isProportionFixed = _isFixed;
|
||||
setProportion(pimpl->proportion);
|
||||
}
|
||||
}
|
||||
|
||||
const QPixmap ImageCropper::cropImage()
|
||||
{
|
||||
// Получим размер отображаемого изображения
|
||||
QSize scaledImageSize =
|
||||
pimpl->imageForCropping.scaled(
|
||||
this->size(), Qt::KeepAspectRatio, Qt::FastTransformation
|
||||
).size();
|
||||
// Определим расстояние от левого и верхнего краёв
|
||||
float leftDelta = 0;
|
||||
float topDelta = 0;
|
||||
const float HALF_COUNT = 2;
|
||||
if (this->size().height() == scaledImageSize.height()) {
|
||||
leftDelta = (this->width() - scaledImageSize.width()) / HALF_COUNT;
|
||||
} else {
|
||||
topDelta = (this->height() - scaledImageSize.height()) / HALF_COUNT;
|
||||
}
|
||||
// Определим пропорцию области обрезки по отношению к исходному изображению
|
||||
float xScale = (float)pimpl->imageForCropping.width() / scaledImageSize.width();
|
||||
float yScale = (float)pimpl->imageForCropping.height() / scaledImageSize.height();
|
||||
// Расчитаем область обрезки с учётом коррекции размеров исходного изображения
|
||||
QRectF realSizeRect(
|
||||
QPointF(pimpl->croppingRect.left() - leftDelta, pimpl->croppingRect.top() - topDelta),
|
||||
pimpl->croppingRect.size());
|
||||
// ... корректируем левый и верхний края
|
||||
realSizeRect.setLeft((pimpl->croppingRect.left() - leftDelta) * xScale);
|
||||
realSizeRect.setTop ((pimpl->croppingRect.top() - topDelta) * yScale);
|
||||
// ... корректируем размер
|
||||
realSizeRect.setWidth(pimpl->croppingRect.width() * xScale);
|
||||
realSizeRect.setHeight(pimpl->croppingRect.height() * yScale);
|
||||
// Получаем обрезанное изображение
|
||||
return pimpl->imageForCropping.copy(realSizeRect.toRect());
|
||||
}
|
||||
|
||||
// ********
|
||||
// Protected section
|
||||
|
||||
void ImageCropper::paintEvent(QPaintEvent* _event)
|
||||
{
|
||||
QWidget::paintEvent( _event );
|
||||
//
|
||||
QPainter widgetPainter(this);
|
||||
// Рисуем изображение по центру виджета
|
||||
{
|
||||
// ... подгоним изображение для отображения по размеру виджета
|
||||
QPixmap scaledImage =
|
||||
pimpl->imageForCropping.scaled(this->size(), Qt::KeepAspectRatio, Qt::FastTransformation);
|
||||
// ... заливаем фон
|
||||
widgetPainter.fillRect( this->rect(), pimpl->backgroundColor );
|
||||
// ... рисуем изображение по центру виджета
|
||||
if ( this->size().height() == scaledImage.height() ) {
|
||||
widgetPainter.drawPixmap( ( this->width() - scaledImage.width() ) / 2, 0, scaledImage );
|
||||
} else {
|
||||
widgetPainter.drawPixmap( 0, ( this->height() - scaledImage.height() ) / 2, scaledImage );
|
||||
}
|
||||
}
|
||||
// Рисуем область обрезки
|
||||
{
|
||||
// ... если это первое отображение после инициилизации, то центруем областо обрезки
|
||||
if (pimpl->croppingRect.isNull()) {
|
||||
const int width = WIDGET_MINIMUM_SIZE.width()/2;
|
||||
const int height = WIDGET_MINIMUM_SIZE.height()/2;
|
||||
pimpl->croppingRect.setSize(QSize(width, height));
|
||||
float x = (this->width() - pimpl->croppingRect.width())/2;
|
||||
float y = (this->height() - pimpl->croppingRect.height())/2;
|
||||
pimpl->croppingRect.moveTo(x, y);
|
||||
}
|
||||
|
||||
// ... рисуем затемненную область
|
||||
QPainterPath p;
|
||||
p.addRect(pimpl->croppingRect);
|
||||
p.addRect(this->rect());
|
||||
widgetPainter.setBrush(QBrush(QColor(0,0,0,120)));
|
||||
widgetPainter.setPen(Qt::transparent);
|
||||
widgetPainter.drawPath(p);
|
||||
// Рамка и контрольные точки
|
||||
widgetPainter.setPen(pimpl->croppingRectBorderColor);
|
||||
// ... рисуем прямоугольник области обрезки
|
||||
{
|
||||
widgetPainter.setBrush(QBrush(Qt::transparent));
|
||||
widgetPainter.drawRect(pimpl->croppingRect);
|
||||
}
|
||||
// ... рисуем контрольные точки
|
||||
{
|
||||
widgetPainter.setBrush(QBrush(pimpl->croppingRectBorderColor));
|
||||
// Вспомогательные X координаты
|
||||
int leftXCoord = pimpl->croppingRect.left() - 2;
|
||||
int centerXCoord = pimpl->croppingRect.center().x() - 3;
|
||||
int rightXCoord = pimpl->croppingRect.right() - 2;
|
||||
// Вспомогательные Y координаты
|
||||
int topYCoord = pimpl->croppingRect.top() - 2;
|
||||
int middleYCoord = pimpl->croppingRect.center().y() - 3;
|
||||
int bottomYCoord = pimpl->croppingRect.bottom() - 2;
|
||||
//
|
||||
const QSize pointSize(6, 6);
|
||||
//
|
||||
QVector<QRect> points;
|
||||
points
|
||||
// левая сторона
|
||||
<< QRect( QPoint(leftXCoord, topYCoord), pointSize )
|
||||
<< QRect( QPoint(leftXCoord, middleYCoord), pointSize )
|
||||
<< QRect( QPoint(leftXCoord, bottomYCoord), pointSize )
|
||||
// центр
|
||||
<< QRect( QPoint(centerXCoord, topYCoord), pointSize )
|
||||
<< QRect( QPoint(centerXCoord, middleYCoord), pointSize )
|
||||
<< QRect( QPoint(centerXCoord, bottomYCoord), pointSize )
|
||||
// правая сторона
|
||||
<< QRect( QPoint(rightXCoord, topYCoord), pointSize )
|
||||
<< QRect( QPoint(rightXCoord, middleYCoord), pointSize )
|
||||
<< QRect( QPoint(rightXCoord, bottomYCoord), pointSize );
|
||||
//
|
||||
widgetPainter.drawRects( points );
|
||||
}
|
||||
// ... рисуем пунктирные линии
|
||||
{
|
||||
QPen dashPen(pimpl->croppingRectBorderColor);
|
||||
dashPen.setStyle(Qt::DashLine);
|
||||
widgetPainter.setPen(dashPen);
|
||||
// ... вертикальная
|
||||
widgetPainter.drawLine(
|
||||
QPoint(pimpl->croppingRect.center().x(), pimpl->croppingRect.top()),
|
||||
QPoint(pimpl->croppingRect.center().x(), pimpl->croppingRect.bottom()) );
|
||||
// ... горизонтальная
|
||||
widgetPainter.drawLine(
|
||||
QPoint(pimpl->croppingRect.left(), pimpl->croppingRect.center().y()),
|
||||
QPoint(pimpl->croppingRect.right(), pimpl->croppingRect.center().y()) );
|
||||
}
|
||||
}
|
||||
//
|
||||
widgetPainter.end();
|
||||
}
|
||||
|
||||
void ImageCropper::mousePressEvent(QMouseEvent* _event)
|
||||
{
|
||||
if (_event->button() == Qt::LeftButton) {
|
||||
pimpl->isMousePressed = true;
|
||||
pimpl->startMousePos = _event->pos();
|
||||
pimpl->lastStaticCroppingRect = pimpl->croppingRect;
|
||||
}
|
||||
//
|
||||
updateCursorIcon(_event->pos());
|
||||
}
|
||||
|
||||
void ImageCropper::mouseMoveEvent(QMouseEvent* _event)
|
||||
{
|
||||
QPointF mousePos = _event->pos(); // относительно себя (виджета)
|
||||
//
|
||||
if (!pimpl->isMousePressed) {
|
||||
// Обработка обычного состояния, т.е. не изменяется размер
|
||||
// области обрезки, и она не перемещается по виджету
|
||||
pimpl->cursorPosition = cursorPosition(pimpl->croppingRect, mousePos);
|
||||
updateCursorIcon(mousePos);
|
||||
} else if (pimpl->cursorPosition != CursorPositionUndefined) {
|
||||
// Обработка действий над областью обрезки
|
||||
// ... определим смещение курсора мышки
|
||||
QPointF mouseDelta;
|
||||
mouseDelta.setX( mousePos.x() - pimpl->startMousePos.x() );
|
||||
mouseDelta.setY( mousePos.y() - pimpl->startMousePos.y() );
|
||||
//
|
||||
if (pimpl->cursorPosition != CursorPositionMiddle) {
|
||||
// ... изменяем размер области обрезки
|
||||
QRectF newGeometry =
|
||||
calculateGeometry(
|
||||
pimpl->lastStaticCroppingRect,
|
||||
pimpl->cursorPosition,
|
||||
mouseDelta);
|
||||
// ... пользователь пытается вывернуть область обрезки наизнанку
|
||||
if (!newGeometry.isNull()) {
|
||||
pimpl->croppingRect = newGeometry;
|
||||
}
|
||||
} else {
|
||||
// ... перемещаем область обрезки
|
||||
pimpl->croppingRect.moveTo( pimpl->lastStaticCroppingRect.topLeft() + mouseDelta );
|
||||
}
|
||||
// Перерисуем виджет
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
void ImageCropper::mouseReleaseEvent(QMouseEvent* _event)
|
||||
{
|
||||
pimpl->isMousePressed = false;
|
||||
updateCursorIcon(_event->pos());
|
||||
}
|
||||
|
||||
// ********
|
||||
// Private section
|
||||
|
||||
namespace {
|
||||
// Находится ли точка рядом с координатой стороны
|
||||
static bool isPointNearSide (const int _sideCoordinate, const int _pointCoordinate)
|
||||
{
|
||||
static const int indent = 10;
|
||||
return (_sideCoordinate - indent) < _pointCoordinate && _pointCoordinate < (_sideCoordinate + indent);
|
||||
}
|
||||
}
|
||||
|
||||
CursorPosition ImageCropper::cursorPosition(const QRectF& _cropRect, const QPointF& _mousePosition)
|
||||
{
|
||||
CursorPosition cursorPosition = CursorPositionUndefined;
|
||||
//
|
||||
if ( _cropRect.contains( _mousePosition ) ) {
|
||||
// Двухстороннее направление
|
||||
if (isPointNearSide(_cropRect.top(), _mousePosition.y()) &&
|
||||
isPointNearSide(_cropRect.left(), _mousePosition.x())) {
|
||||
cursorPosition = CursorPositionTopLeft;
|
||||
} else if (isPointNearSide(_cropRect.bottom(), _mousePosition.y()) &&
|
||||
isPointNearSide(_cropRect.left(), _mousePosition.x())) {
|
||||
cursorPosition = CursorPositionBottomLeft;
|
||||
} else if (isPointNearSide(_cropRect.top(), _mousePosition.y()) &&
|
||||
isPointNearSide(_cropRect.right(), _mousePosition.x())) {
|
||||
cursorPosition = CursorPositionTopRight;
|
||||
} else if (isPointNearSide(_cropRect.bottom(), _mousePosition.y()) &&
|
||||
isPointNearSide(_cropRect.right(), _mousePosition.x())) {
|
||||
cursorPosition = CursorPositionBottomRight;
|
||||
// Одностороннее направление
|
||||
} else if (isPointNearSide(_cropRect.left(), _mousePosition.x())) {
|
||||
cursorPosition = CursorPositionLeft;
|
||||
} else if (isPointNearSide(_cropRect.right(), _mousePosition.x())) {
|
||||
cursorPosition = CursorPositionRight;
|
||||
} else if (isPointNearSide(_cropRect.top(), _mousePosition.y())) {
|
||||
cursorPosition = CursorPositionTop;
|
||||
} else if (isPointNearSide(_cropRect.bottom(), _mousePosition.y())) {
|
||||
cursorPosition = CursorPositionBottom;
|
||||
// Без направления
|
||||
} else {
|
||||
cursorPosition = CursorPositionMiddle;
|
||||
}
|
||||
}
|
||||
//
|
||||
return cursorPosition;
|
||||
}
|
||||
|
||||
void ImageCropper::updateCursorIcon(const QPointF& _mousePosition)
|
||||
{
|
||||
QCursor cursorIcon;
|
||||
//
|
||||
switch (cursorPosition(pimpl->croppingRect, _mousePosition))
|
||||
{
|
||||
case CursorPositionTopRight:
|
||||
case CursorPositionBottomLeft:
|
||||
cursorIcon = QCursor(Qt::SizeBDiagCursor);
|
||||
break;
|
||||
case CursorPositionTopLeft:
|
||||
case CursorPositionBottomRight:
|
||||
cursorIcon = QCursor(Qt::SizeFDiagCursor);
|
||||
break;
|
||||
case CursorPositionTop:
|
||||
case CursorPositionBottom:
|
||||
cursorIcon = QCursor(Qt::SizeVerCursor);
|
||||
break;
|
||||
case CursorPositionLeft:
|
||||
case CursorPositionRight:
|
||||
cursorIcon = QCursor(Qt::SizeHorCursor);
|
||||
break;
|
||||
case CursorPositionMiddle:
|
||||
cursorIcon = pimpl->isMousePressed ?
|
||||
QCursor(Qt::ClosedHandCursor) :
|
||||
QCursor(Qt::OpenHandCursor);
|
||||
break;
|
||||
case CursorPositionUndefined:
|
||||
default:
|
||||
cursorIcon = QCursor(Qt::ArrowCursor);
|
||||
break;
|
||||
}
|
||||
//
|
||||
this->setCursor(cursorIcon);
|
||||
}
|
||||
|
||||
const QRectF ImageCropper::calculateGeometry(
|
||||
const QRectF& _sourceGeometry,
|
||||
const CursorPosition _cursorPosition,
|
||||
const QPointF& _mouseDelta
|
||||
)
|
||||
{
|
||||
QRectF resultGeometry;
|
||||
//
|
||||
if ( pimpl->isProportionFixed ) {
|
||||
resultGeometry =
|
||||
calculateGeometryWithFixedProportions(
|
||||
_sourceGeometry, _cursorPosition, _mouseDelta, pimpl->deltas);
|
||||
} else {
|
||||
resultGeometry =
|
||||
calculateGeometryWithCustomProportions(
|
||||
_sourceGeometry, _cursorPosition, _mouseDelta);
|
||||
}
|
||||
// Если пользователь пытается вывернуть область обрезки наизнанку,
|
||||
// возвращаем null-прямоугольник
|
||||
if ((resultGeometry.left() >= resultGeometry.right()) ||
|
||||
(resultGeometry.top() >= resultGeometry.bottom())) {
|
||||
resultGeometry = QRect();
|
||||
}
|
||||
//
|
||||
return resultGeometry;
|
||||
}
|
||||
|
||||
const QRectF ImageCropper::calculateGeometryWithCustomProportions(
|
||||
const QRectF& _sourceGeometry,
|
||||
const CursorPosition _cursorPosition,
|
||||
const QPointF& _mouseDelta
|
||||
)
|
||||
{
|
||||
QRectF resultGeometry = _sourceGeometry;
|
||||
//
|
||||
switch ( _cursorPosition )
|
||||
{
|
||||
case CursorPositionTopLeft:
|
||||
resultGeometry.setLeft( _sourceGeometry.left() + _mouseDelta.x() );
|
||||
resultGeometry.setTop ( _sourceGeometry.top() + _mouseDelta.y() );
|
||||
break;
|
||||
case CursorPositionTopRight:
|
||||
resultGeometry.setTop ( _sourceGeometry.top() + _mouseDelta.y() );
|
||||
resultGeometry.setRight( _sourceGeometry.right() + _mouseDelta.x() );
|
||||
break;
|
||||
case CursorPositionBottomLeft:
|
||||
resultGeometry.setBottom( _sourceGeometry.bottom() + _mouseDelta.y() );
|
||||
resultGeometry.setLeft ( _sourceGeometry.left() + _mouseDelta.x() );
|
||||
break;
|
||||
case CursorPositionBottomRight:
|
||||
resultGeometry.setBottom( _sourceGeometry.bottom() + _mouseDelta.y() );
|
||||
resultGeometry.setRight ( _sourceGeometry.right() + _mouseDelta.x() );
|
||||
break;
|
||||
case CursorPositionTop:
|
||||
resultGeometry.setTop( _sourceGeometry.top() + _mouseDelta.y() );
|
||||
break;
|
||||
case CursorPositionBottom:
|
||||
resultGeometry.setBottom( _sourceGeometry.bottom() + _mouseDelta.y() );
|
||||
break;
|
||||
case CursorPositionLeft:
|
||||
resultGeometry.setLeft( _sourceGeometry.left() + _mouseDelta.x() );
|
||||
break;
|
||||
case CursorPositionRight:
|
||||
resultGeometry.setRight( _sourceGeometry.right() + _mouseDelta.x() );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//
|
||||
return resultGeometry;
|
||||
}
|
||||
|
||||
const QRectF ImageCropper::calculateGeometryWithFixedProportions(
|
||||
const QRectF& _sourceGeometry,
|
||||
const CursorPosition _cursorPosition,
|
||||
const QPointF& _mouseDelta,
|
||||
const QSizeF& _deltas
|
||||
)
|
||||
{
|
||||
QRectF resultGeometry = _sourceGeometry;
|
||||
//
|
||||
switch (_cursorPosition)
|
||||
{
|
||||
case CursorPositionLeft:
|
||||
resultGeometry.setTop(_sourceGeometry.top() + _mouseDelta.x() * _deltas.height());
|
||||
resultGeometry.setLeft(_sourceGeometry.left() + _mouseDelta.x());
|
||||
break;
|
||||
case CursorPositionRight:
|
||||
resultGeometry.setTop(_sourceGeometry.top() - _mouseDelta.x() * _deltas.height());
|
||||
resultGeometry.setRight(_sourceGeometry.right() + _mouseDelta.x());
|
||||
break;
|
||||
case CursorPositionTop:
|
||||
resultGeometry.setTop(_sourceGeometry.top() + _mouseDelta.y());
|
||||
resultGeometry.setRight(_sourceGeometry.right() - _mouseDelta.y() * _deltas.width());
|
||||
break;
|
||||
case CursorPositionBottom:
|
||||
resultGeometry.setBottom(_sourceGeometry.bottom() + _mouseDelta.y());
|
||||
resultGeometry.setRight(_sourceGeometry.right() + _mouseDelta.y() * _deltas.width());
|
||||
break;
|
||||
case CursorPositionTopLeft:
|
||||
if ((_mouseDelta.x() * _deltas.height()) < (_mouseDelta.y())) {
|
||||
resultGeometry.setTop(_sourceGeometry.top() + _mouseDelta.x() * _deltas.height());
|
||||
resultGeometry.setLeft(_sourceGeometry.left() + _mouseDelta.x());
|
||||
} else {
|
||||
resultGeometry.setTop(_sourceGeometry.top() + _mouseDelta.y());
|
||||
resultGeometry.setLeft(_sourceGeometry.left() + _mouseDelta.y() * _deltas.width());
|
||||
}
|
||||
break;
|
||||
case CursorPositionTopRight:
|
||||
if ((_mouseDelta.x() * _deltas.height() * -1) < (_mouseDelta.y())) {
|
||||
resultGeometry.setTop(_sourceGeometry.top() - _mouseDelta.x() * _deltas.height());
|
||||
resultGeometry.setRight(_sourceGeometry.right() + _mouseDelta.x() );
|
||||
} else {
|
||||
resultGeometry.setTop(_sourceGeometry.top() + _mouseDelta.y());
|
||||
resultGeometry.setRight(_sourceGeometry.right() - _mouseDelta.y() * _deltas.width());
|
||||
}
|
||||
break;
|
||||
case CursorPositionBottomLeft:
|
||||
if ((_mouseDelta.x() * _deltas.height()) < (_mouseDelta.y() * -1)) {
|
||||
resultGeometry.setBottom(_sourceGeometry.bottom() - _mouseDelta.x() * _deltas.height());
|
||||
resultGeometry.setLeft(_sourceGeometry.left() + _mouseDelta.x());
|
||||
} else {
|
||||
resultGeometry.setBottom(_sourceGeometry.bottom() + _mouseDelta.y());
|
||||
resultGeometry.setLeft(_sourceGeometry.left() - _mouseDelta.y() * _deltas.width());
|
||||
}
|
||||
break;
|
||||
case CursorPositionBottomRight:
|
||||
if ((_mouseDelta.x() * _deltas.height()) > (_mouseDelta.y())) {
|
||||
resultGeometry.setBottom(_sourceGeometry.bottom() + _mouseDelta.x() * _deltas.height());
|
||||
resultGeometry.setRight(_sourceGeometry.right() + _mouseDelta.x());
|
||||
} else {
|
||||
resultGeometry.setBottom(_sourceGeometry.bottom() + _mouseDelta.y());
|
||||
resultGeometry.setRight(_sourceGeometry.right() + _mouseDelta.y() * _deltas.width());
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//
|
||||
return resultGeometry;
|
||||
}
|
||||
|
103
anpro/imagecropper.h
Normal file
103
anpro/imagecropper.h
Normal file
|
@ -0,0 +1,103 @@
|
|||
/*****************************************************************************
|
||||
* ImageCropper Qt Widget for cropping images
|
||||
* Copyright (C) 2013 Dimka Novikov, to@dimkanovikov.pro
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef IMAGECROPPER_H
|
||||
#define IMAGECROPPER_H
|
||||
|
||||
#include "imagecropper_p.h"
|
||||
#include "imagecropper_e.h"
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
class ImageCropper : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ImageCropper(QWidget *parent = 0);
|
||||
~ImageCropper();
|
||||
|
||||
public slots:
|
||||
// Установить изображение для обрезки
|
||||
void setImage(const QPixmap& _image);
|
||||
// Установить цвет фона виджета обрезки
|
||||
void setBackgroundColor(const QColor& _backgroundColor);
|
||||
// Установить цвет рамки области обрезки
|
||||
void setCroppingRectBorderColor(const QColor& _borderColor);
|
||||
// Установить пропорции области выделения
|
||||
void setProportion(const QSizeF& _proportion);
|
||||
// Использовать фиксированные пропорции области виделения
|
||||
void setProportionFixed(const bool _isFixed);
|
||||
|
||||
public:
|
||||
// Обрезать изображение
|
||||
const QPixmap cropImage();
|
||||
|
||||
protected:
|
||||
virtual void paintEvent(QPaintEvent* _event);
|
||||
virtual void mousePressEvent(QMouseEvent* _event);
|
||||
virtual void mouseMoveEvent(QMouseEvent* _event);
|
||||
virtual void mouseReleaseEvent(QMouseEvent* _event);
|
||||
|
||||
private:
|
||||
// Определение местоположения курсора над виджетом
|
||||
CursorPosition cursorPosition(const QRectF& _cropRect, const QPointF& _mousePosition);
|
||||
// Обновить иконку курсора соответствующую местоположению мыши
|
||||
void updateCursorIcon(const QPointF& _mousePosition);
|
||||
|
||||
// Получить размер виджета после его изменения мышью
|
||||
// --------
|
||||
// Контракты:
|
||||
// 1. Метод должен вызываться, только при зажатой кнопке мыши
|
||||
// (т.е. при перемещении или изменении размера виджета)
|
||||
// --------
|
||||
// В случае неудачи возвращает null-прямоугольник
|
||||
const QRectF calculateGeometry(
|
||||
const QRectF& _sourceGeometry,
|
||||
const CursorPosition _cursorPosition,
|
||||
const QPointF& _mouseDelta
|
||||
);
|
||||
// Получить размер виджета после его изменения мышью
|
||||
// Метод изменяет виджет не сохраняя начальных пропорций сторон
|
||||
// ------
|
||||
// Контракты:
|
||||
// 1. Метод должен вызываться, только при зажатой кнопке мыши
|
||||
// (т.е. при перемещении или изменении размера виджета)
|
||||
const QRectF calculateGeometryWithCustomProportions(
|
||||
const QRectF& _sourceGeometry,
|
||||
const CursorPosition _cursorPosition,
|
||||
const QPointF& _mouseDelta
|
||||
);
|
||||
// Получить размер виджета после его изменения мышью
|
||||
// Метод изменяет виджет сохраняя начальные пропорции сторон
|
||||
// ------
|
||||
// Контракты:
|
||||
// 1. Метод должен вызываться, только при зажатой кнопке мыши
|
||||
// (т.е. при перемещении или изменении размера виджета)
|
||||
const QRectF calculateGeometryWithFixedProportions(const QRectF &_sourceGeometry,
|
||||
const CursorPosition _cursorPosition,
|
||||
const QPointF &_mouseDelta,
|
||||
const QSizeF &_deltas
|
||||
);
|
||||
|
||||
private:
|
||||
// Private data implementation
|
||||
ImageCropperPrivate* pimpl;
|
||||
};
|
||||
|
||||
#endif // IMAGECROPPER_H
|
36
anpro/imagecropper_e.h
Normal file
36
anpro/imagecropper_e.h
Normal file
|
@ -0,0 +1,36 @@
|
|||
/*****************************************************************************
|
||||
* ImageCropper Qt Widget for cropping images
|
||||
* Copyright (C) 2013 Dimka Novikov, to@dimkanovikov.pro
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef IMAGECROPPER_E_H
|
||||
#define IMAGECROPPER_E_H
|
||||
|
||||
enum CursorPosition
|
||||
{
|
||||
CursorPositionUndefined,
|
||||
CursorPositionMiddle,
|
||||
CursorPositionTop,
|
||||
CursorPositionBottom,
|
||||
CursorPositionLeft,
|
||||
CursorPositionRight,
|
||||
CursorPositionTopLeft,
|
||||
CursorPositionTopRight,
|
||||
CursorPositionBottomLeft,
|
||||
CursorPositionBottomRight
|
||||
};
|
||||
|
||||
#endif // IMAGECROPPER_E_H
|
76
anpro/imagecropper_p.h
Normal file
76
anpro/imagecropper_p.h
Normal file
|
@ -0,0 +1,76 @@
|
|||
/*****************************************************************************
|
||||
* ImageCropper Qt Widget for cropping images
|
||||
* Copyright (C) 2013 Dimka Novikov, to@dimkanovikov.pro
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3 of the License, or any later version.
|
||||
*
|
||||
* This library 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
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef IMAGECROPPER_P_H
|
||||
#define IMAGECROPPER_P_H
|
||||
|
||||
#include "imagecropper_e.h"
|
||||
|
||||
#include <QtCore/QRect>
|
||||
#include <QtGui/QPixmap>
|
||||
#include <QtGui/QColor>
|
||||
|
||||
namespace {
|
||||
const QRect INIT_CROPPING_RECT = QRect();
|
||||
const QSizeF INIT_PROPORTION = QSizeF(1.0, 1.0);
|
||||
}
|
||||
|
||||
class ImageCropperPrivate {
|
||||
public:
|
||||
ImageCropperPrivate() :
|
||||
imageForCropping(QPixmap()),
|
||||
croppingRect(INIT_CROPPING_RECT),
|
||||
lastStaticCroppingRect(QRect()),
|
||||
cursorPosition(CursorPositionUndefined),
|
||||
isMousePressed(false),
|
||||
isProportionFixed(false),
|
||||
startMousePos(QPoint()),
|
||||
proportion(INIT_PROPORTION),
|
||||
deltas(INIT_PROPORTION),
|
||||
backgroundColor(Qt::black),
|
||||
croppingRectBorderColor(Qt::white)
|
||||
{}
|
||||
|
||||
public:
|
||||
// Изображение для обрезки
|
||||
QPixmap imageForCropping;
|
||||
// Область обрезки
|
||||
QRectF croppingRect;
|
||||
// Последняя фиксированная область обрезки
|
||||
QRectF lastStaticCroppingRect;
|
||||
// Позиция курсора относительно области обрезки
|
||||
CursorPosition cursorPosition;
|
||||
// Зажата ли левая кнопка мыши
|
||||
bool isMousePressed;
|
||||
// Фиксировать пропорции области обрезки
|
||||
bool isProportionFixed;
|
||||
// Начальная позиция курсора при изменении размера области обрезки
|
||||
QPointF startMousePos;
|
||||
// Пропорции
|
||||
QSizeF proportion;
|
||||
// Приращения
|
||||
// width - приращение по x
|
||||
// height - приращение по y
|
||||
QSizeF deltas;
|
||||
// Цвет заливки фона под изображением
|
||||
QColor backgroundColor;
|
||||
// Цвет рамки области обрезки
|
||||
QColor croppingRectBorderColor;
|
||||
};
|
||||
|
||||
#endif // IMAGECROPPER_P_H
|
|
@ -63,9 +63,10 @@ SOURCES += main.cpp \
|
|||
TelemetryClass.cpp \
|
||||
TranslationClass.cpp \
|
||||
UserInterface.cpp \
|
||||
anpro/JSHighlighter.cpp \
|
||||
anpro/imagecropper.cpp \
|
||||
pcg/pcg_basic.c \
|
||||
tmext/TelemetryClassAuthenticator.cpp \
|
||||
uimod/JSHighlighter.cpp \
|
||||
uimod/UiModLabel.cpp \
|
||||
uimod/UiModWidget.cpp
|
||||
|
||||
|
@ -104,9 +105,12 @@ HEADERS += \
|
|||
TelemetryClass.h \
|
||||
TranslationClass.h \
|
||||
UserInterface.h \
|
||||
anpro/JSHighlighter.h \
|
||||
anpro/imagecropper.h \
|
||||
anpro/imagecropper_e.h \
|
||||
anpro/imagecropper_p.h \
|
||||
pcg/pcg_basic.h \
|
||||
tmext/TelemetryClassAuthenticator.h \
|
||||
uimod/JSHighlighter.h \
|
||||
uimod/UiModLabel.h \
|
||||
uimod/UiModWidget.h
|
||||
|
||||
|
|
|
@ -252,8 +252,8 @@ Pictures and Savegames</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="84"/>
|
||||
<location filename="../ImportDialog.cpp" line="447"/>
|
||||
<location filename="../ImportDialog.cpp" line="85"/>
|
||||
<location filename="../ImportDialog.cpp" line="491"/>
|
||||
<source>Background Colour: <span style="color: %1">%1</span></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -270,8 +270,8 @@ Pictures and Savegames</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="203"/>
|
||||
<location filename="../ImportDialog.cpp" line="85"/>
|
||||
<location filename="../ImportDialog.cpp" line="527"/>
|
||||
<location filename="../ImportDialog.cpp" line="86"/>
|
||||
<location filename="../ImportDialog.cpp" line="571"/>
|
||||
<source>Background Image:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -306,67 +306,87 @@ Pictures and Savegames</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="334"/>
|
||||
<location filename="../ImportDialog.ui" line="337"/>
|
||||
<source>Import picture</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="337"/>
|
||||
<location filename="../ImportDialog.ui" line="340"/>
|
||||
<source>&OK</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="350"/>
|
||||
<location filename="../ImportDialog.ui" line="353"/>
|
||||
<source>Discard picture</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="353"/>
|
||||
<location filename="../ImportDialog.ui" line="356"/>
|
||||
<source>&Cancel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="110"/>
|
||||
<location filename="../ImportDialog.cpp" line="111"/>
|
||||
<source>&Import new Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="183"/>
|
||||
<location filename="../ImportDialog.cpp" line="112"/>
|
||||
<source>&Crop Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="185"/>
|
||||
<location filename="../ProfileInterface.cpp" line="668"/>
|
||||
<source>Custom Avatar</source>
|
||||
<comment>Custom Avatar Description in SC, don't use Special Character!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="210"/>
|
||||
<location filename="../ImportDialog.cpp" line="212"/>
|
||||
<location filename="../ProfileInterface.cpp" line="687"/>
|
||||
<source>Custom Picture</source>
|
||||
<comment>Custom Picture Description in SC, don't use Special Character!</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="394"/>
|
||||
<location filename="../ImportDialog.cpp" line="265"/>
|
||||
<source>Crop Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="287"/>
|
||||
<source>&Crop</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="288"/>
|
||||
<source>Crop Picture</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="438"/>
|
||||
<source>Snapmatic Avatar Zone</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="394"/>
|
||||
<location filename="../ImportDialog.cpp" line="438"/>
|
||||
<source>Are you sure to use a square image outside of the Avatar Zone?
|
||||
When you want to use it as Avatar the image will be detached!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="443"/>
|
||||
<location filename="../ImportDialog.cpp" line="487"/>
|
||||
<source>Select Colour...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="512"/>
|
||||
<location filename="../ImportDialog.cpp" line="556"/>
|
||||
<source>Background Image: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="512"/>
|
||||
<location filename="../ImportDialog.cpp" line="556"/>
|
||||
<source>File</source>
|
||||
<comment>Background Image: File</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -1108,8 +1128,8 @@ Press 1 for Default View</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="109"/>
|
||||
<location filename="../ImportDialog.cpp" line="272"/>
|
||||
<location filename="../ImportDialog.cpp" line="466"/>
|
||||
<location filename="../ImportDialog.cpp" line="316"/>
|
||||
<location filename="../ImportDialog.cpp" line="510"/>
|
||||
<location filename="../ProfileInterface.cpp" line="482"/>
|
||||
<location filename="../ProfileInterface.cpp" line="548"/>
|
||||
<location filename="../ProfileInterface.cpp" line="857"/>
|
||||
|
@ -1120,12 +1140,12 @@ Press 1 for Default View</source>
|
|||
<location filename="../ImageEditorDialog.cpp" line="110"/>
|
||||
<location filename="../ImageEditorDialog.cpp" line="141"/>
|
||||
<location filename="../ImageEditorDialog.cpp" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="273"/>
|
||||
<location filename="../ImportDialog.cpp" line="304"/>
|
||||
<location filename="../ImportDialog.cpp" line="313"/>
|
||||
<location filename="../ImportDialog.cpp" line="467"/>
|
||||
<location filename="../ImportDialog.cpp" line="498"/>
|
||||
<location filename="../ImportDialog.cpp" line="507"/>
|
||||
<location filename="../ImportDialog.cpp" line="317"/>
|
||||
<location filename="../ImportDialog.cpp" line="348"/>
|
||||
<location filename="../ImportDialog.cpp" line="357"/>
|
||||
<location filename="../ImportDialog.cpp" line="511"/>
|
||||
<location filename="../ImportDialog.cpp" line="542"/>
|
||||
<location filename="../ImportDialog.cpp" line="551"/>
|
||||
<location filename="../ProfileInterface.cpp" line="483"/>
|
||||
<location filename="../ProfileInterface.cpp" line="527"/>
|
||||
<location filename="../ProfileInterface.cpp" line="582"/>
|
||||
|
@ -1145,16 +1165,16 @@ Press 1 for Default View</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="120"/>
|
||||
<location filename="../ImportDialog.cpp" line="283"/>
|
||||
<location filename="../ImportDialog.cpp" line="477"/>
|
||||
<location filename="../ImportDialog.cpp" line="327"/>
|
||||
<location filename="../ImportDialog.cpp" line="521"/>
|
||||
<location filename="../ProfileInterface.cpp" line="502"/>
|
||||
<source>All image files (%1)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="121"/>
|
||||
<location filename="../ImportDialog.cpp" line="284"/>
|
||||
<location filename="../ImportDialog.cpp" line="478"/>
|
||||
<location filename="../ImportDialog.cpp" line="328"/>
|
||||
<location filename="../ImportDialog.cpp" line="522"/>
|
||||
<location filename="../ProfileInterface.cpp" line="503"/>
|
||||
<location filename="../UserInterface.cpp" line="463"/>
|
||||
<source>All files (**)</source>
|
||||
|
@ -1162,16 +1182,16 @@ Press 1 for Default View</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="141"/>
|
||||
<location filename="../ImportDialog.cpp" line="304"/>
|
||||
<location filename="../ImportDialog.cpp" line="498"/>
|
||||
<location filename="../ImportDialog.cpp" line="348"/>
|
||||
<location filename="../ImportDialog.cpp" line="542"/>
|
||||
<location filename="../ProfileInterface.cpp" line="725"/>
|
||||
<source>Can't import %1 because file can't be open</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="313"/>
|
||||
<location filename="../ImportDialog.cpp" line="507"/>
|
||||
<location filename="../ImportDialog.cpp" line="357"/>
|
||||
<location filename="../ImportDialog.cpp" line="551"/>
|
||||
<location filename="../ProfileInterface.cpp" line="735"/>
|
||||
<source>Can't import %1 because file can't be parsed properly</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|
Binary file not shown.
|
@ -262,8 +262,8 @@ Snapmatic Bilder und Spielständen</translation>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="84"/>
|
||||
<location filename="../ImportDialog.cpp" line="447"/>
|
||||
<location filename="../ImportDialog.cpp" line="85"/>
|
||||
<location filename="../ImportDialog.cpp" line="491"/>
|
||||
<source>Background Colour: <span style="color: %1">%1</span></source>
|
||||
<translation>Hintergrundfarbe: <span style="color: %1">%1</span></translation>
|
||||
</message>
|
||||
|
@ -289,7 +289,7 @@ Snapmatic Bilder und Spielständen</translation>
|
|||
<translation>Hintergrundbild entfernen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="512"/>
|
||||
<location filename="../ImportDialog.cpp" line="556"/>
|
||||
<source>Background Image: %1</source>
|
||||
<translation>Hintergrundbild: %1</translation>
|
||||
</message>
|
||||
|
@ -314,70 +314,90 @@ Snapmatic Bilder und Spielständen</translation>
|
|||
<translation>&Optionen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="334"/>
|
||||
<location filename="../ImportDialog.ui" line="337"/>
|
||||
<source>Import picture</source>
|
||||
<translation>Bild importieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="337"/>
|
||||
<location filename="../ImportDialog.ui" line="340"/>
|
||||
<source>&OK</source>
|
||||
<translation>&OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="350"/>
|
||||
<location filename="../ImportDialog.ui" line="353"/>
|
||||
<source>Discard picture</source>
|
||||
<translation>Bild verwerfen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="353"/>
|
||||
<location filename="../ImportDialog.ui" line="356"/>
|
||||
<source>&Cancel</source>
|
||||
<translation>Abbre&chen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="203"/>
|
||||
<location filename="../ImportDialog.cpp" line="85"/>
|
||||
<location filename="../ImportDialog.cpp" line="527"/>
|
||||
<location filename="../ImportDialog.cpp" line="86"/>
|
||||
<location filename="../ImportDialog.cpp" line="571"/>
|
||||
<source>Background Image:</source>
|
||||
<translation>Hintergrundbild:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="110"/>
|
||||
<location filename="../ImportDialog.cpp" line="111"/>
|
||||
<source>&Import new Picture...</source>
|
||||
<translation>Neues Bild &importieren...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="183"/>
|
||||
<location filename="../ImportDialog.cpp" line="112"/>
|
||||
<source>&Crop Picture...</source>
|
||||
<translation>Bild zu&schneiden...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="185"/>
|
||||
<location filename="../ProfileInterface.cpp" line="668"/>
|
||||
<source>Custom Avatar</source>
|
||||
<comment>Custom Avatar Description in SC, don't use Special Character!</comment>
|
||||
<translation>Eigener Avatar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="210"/>
|
||||
<location filename="../ImportDialog.cpp" line="212"/>
|
||||
<location filename="../ProfileInterface.cpp" line="687"/>
|
||||
<source>Custom Picture</source>
|
||||
<comment>Custom Picture Description in SC, don't use Special Character!</comment>
|
||||
<translation>Eigenes Bild</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="394"/>
|
||||
<location filename="../ImportDialog.cpp" line="265"/>
|
||||
<source>Crop Picture...</source>
|
||||
<translation>Bild zuschneiden...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="287"/>
|
||||
<source>&Crop</source>
|
||||
<translation>Zu&schneiden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="288"/>
|
||||
<source>Crop Picture</source>
|
||||
<translation>Bild zuschneiden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="438"/>
|
||||
<source>Are you sure to use a square image outside of the Avatar Zone?
|
||||
When you want to use it as Avatar the image will be detached!</source>
|
||||
<translation>Bist du sicher ein Quadrat Bild außerhalb der Avatar Zone zu verwenden?
|
||||
Wenn du es als Avatar verwenden möchtest wird es abgetrennt!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="394"/>
|
||||
<location filename="../ImportDialog.cpp" line="438"/>
|
||||
<source>Snapmatic Avatar Zone</source>
|
||||
<translation>Snapmatic Avatar Zone</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="443"/>
|
||||
<location filename="../ImportDialog.cpp" line="487"/>
|
||||
<source>Select Colour...</source>
|
||||
<translation>Farbe auswählen...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="512"/>
|
||||
<location filename="../ImportDialog.cpp" line="556"/>
|
||||
<source>File</source>
|
||||
<comment>Background Image: File</comment>
|
||||
<translation>Datei</translation>
|
||||
|
@ -1135,8 +1155,8 @@ Drücke 1 für Standardmodus</translation>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="109"/>
|
||||
<location filename="../ImportDialog.cpp" line="272"/>
|
||||
<location filename="../ImportDialog.cpp" line="466"/>
|
||||
<location filename="../ImportDialog.cpp" line="316"/>
|
||||
<location filename="../ImportDialog.cpp" line="510"/>
|
||||
<location filename="../ProfileInterface.cpp" line="482"/>
|
||||
<location filename="../ProfileInterface.cpp" line="548"/>
|
||||
<location filename="../ProfileInterface.cpp" line="857"/>
|
||||
|
@ -1147,12 +1167,12 @@ Drücke 1 für Standardmodus</translation>
|
|||
<location filename="../ImageEditorDialog.cpp" line="110"/>
|
||||
<location filename="../ImageEditorDialog.cpp" line="141"/>
|
||||
<location filename="../ImageEditorDialog.cpp" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="273"/>
|
||||
<location filename="../ImportDialog.cpp" line="304"/>
|
||||
<location filename="../ImportDialog.cpp" line="313"/>
|
||||
<location filename="../ImportDialog.cpp" line="467"/>
|
||||
<location filename="../ImportDialog.cpp" line="498"/>
|
||||
<location filename="../ImportDialog.cpp" line="507"/>
|
||||
<location filename="../ImportDialog.cpp" line="317"/>
|
||||
<location filename="../ImportDialog.cpp" line="348"/>
|
||||
<location filename="../ImportDialog.cpp" line="357"/>
|
||||
<location filename="../ImportDialog.cpp" line="511"/>
|
||||
<location filename="../ImportDialog.cpp" line="542"/>
|
||||
<location filename="../ImportDialog.cpp" line="551"/>
|
||||
<location filename="../ProfileInterface.cpp" line="483"/>
|
||||
<location filename="../ProfileInterface.cpp" line="527"/>
|
||||
<location filename="../ProfileInterface.cpp" line="582"/>
|
||||
|
@ -1189,16 +1209,16 @@ Drücke 1 für Standardmodus</translation>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="120"/>
|
||||
<location filename="../ImportDialog.cpp" line="283"/>
|
||||
<location filename="../ImportDialog.cpp" line="477"/>
|
||||
<location filename="../ImportDialog.cpp" line="327"/>
|
||||
<location filename="../ImportDialog.cpp" line="521"/>
|
||||
<location filename="../ProfileInterface.cpp" line="502"/>
|
||||
<source>All image files (%1)</source>
|
||||
<translation>Alle Bilddateien (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="121"/>
|
||||
<location filename="../ImportDialog.cpp" line="284"/>
|
||||
<location filename="../ImportDialog.cpp" line="478"/>
|
||||
<location filename="../ImportDialog.cpp" line="328"/>
|
||||
<location filename="../ImportDialog.cpp" line="522"/>
|
||||
<location filename="../ProfileInterface.cpp" line="503"/>
|
||||
<location filename="../UserInterface.cpp" line="463"/>
|
||||
<source>All files (**)</source>
|
||||
|
@ -1233,16 +1253,16 @@ Drücke 1 für Standardmodus</translation>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="141"/>
|
||||
<location filename="../ImportDialog.cpp" line="304"/>
|
||||
<location filename="../ImportDialog.cpp" line="498"/>
|
||||
<location filename="../ImportDialog.cpp" line="348"/>
|
||||
<location filename="../ImportDialog.cpp" line="542"/>
|
||||
<location filename="../ProfileInterface.cpp" line="725"/>
|
||||
<source>Can't import %1 because file can't be open</source>
|
||||
<translation>Kann %1 nicht importieren weil die Datei nicht geöffnet werden kann</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="313"/>
|
||||
<location filename="../ImportDialog.cpp" line="507"/>
|
||||
<location filename="../ImportDialog.cpp" line="357"/>
|
||||
<location filename="../ImportDialog.cpp" line="551"/>
|
||||
<location filename="../ProfileInterface.cpp" line="735"/>
|
||||
<source>Can't import %1 because file can't be parsed properly</source>
|
||||
<translation>Kann %1 nicht importieren weil die Datei nicht richtig gelesen werden kann</translation>
|
||||
|
|
|
@ -226,8 +226,8 @@ Pictures and Savegames</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="84"/>
|
||||
<location filename="../ImportDialog.cpp" line="447"/>
|
||||
<location filename="../ImportDialog.cpp" line="85"/>
|
||||
<location filename="../ImportDialog.cpp" line="491"/>
|
||||
<source>Background Colour: <span style="color: %1">%1</span></source>
|
||||
<translation>Background Color: <span style="color: %1">%1</span></translation>
|
||||
</message>
|
||||
|
@ -269,7 +269,7 @@ Pictures and Savegames</source>
|
|||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="512"/>
|
||||
<location filename="../ImportDialog.cpp" line="556"/>
|
||||
<source>Background Image: %1</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
|
@ -304,69 +304,89 @@ Pictures and Savegames</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="334"/>
|
||||
<location filename="../ImportDialog.ui" line="337"/>
|
||||
<source>Import picture</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="337"/>
|
||||
<location filename="../ImportDialog.ui" line="340"/>
|
||||
<source>&OK</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="350"/>
|
||||
<location filename="../ImportDialog.ui" line="353"/>
|
||||
<source>Discard picture</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="353"/>
|
||||
<location filename="../ImportDialog.ui" line="356"/>
|
||||
<source>&Cancel</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="203"/>
|
||||
<location filename="../ImportDialog.cpp" line="85"/>
|
||||
<location filename="../ImportDialog.cpp" line="527"/>
|
||||
<location filename="../ImportDialog.cpp" line="86"/>
|
||||
<location filename="../ImportDialog.cpp" line="571"/>
|
||||
<source>Background Image:</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="110"/>
|
||||
<location filename="../ImportDialog.cpp" line="111"/>
|
||||
<source>&Import new Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="183"/>
|
||||
<location filename="../ImportDialog.cpp" line="112"/>
|
||||
<source>&Crop Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="185"/>
|
||||
<location filename="../ProfileInterface.cpp" line="668"/>
|
||||
<source>Custom Avatar</source>
|
||||
<comment>Custom Avatar Description in SC, don't use Special Character!</comment>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="210"/>
|
||||
<location filename="../ImportDialog.cpp" line="212"/>
|
||||
<location filename="../ProfileInterface.cpp" line="687"/>
|
||||
<source>Custom Picture</source>
|
||||
<comment>Custom Picture Description in SC, don't use Special Character!</comment>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="394"/>
|
||||
<location filename="../ImportDialog.cpp" line="265"/>
|
||||
<source>Crop Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="287"/>
|
||||
<source>&Crop</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="288"/>
|
||||
<source>Crop Picture</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="438"/>
|
||||
<source>Snapmatic Avatar Zone</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="394"/>
|
||||
<location filename="../ImportDialog.cpp" line="438"/>
|
||||
<source>Are you sure to use a square image outside of the Avatar Zone?
|
||||
When you want to use it as Avatar the image will be detached!</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="443"/>
|
||||
<location filename="../ImportDialog.cpp" line="487"/>
|
||||
<source>Select Colour...</source>
|
||||
<translation>Select Color...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="512"/>
|
||||
<location filename="../ImportDialog.cpp" line="556"/>
|
||||
<source>File</source>
|
||||
<comment>Background Image: File</comment>
|
||||
<translation></translation>
|
||||
|
@ -1128,8 +1148,8 @@ Press 1 for Default View</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="109"/>
|
||||
<location filename="../ImportDialog.cpp" line="272"/>
|
||||
<location filename="../ImportDialog.cpp" line="466"/>
|
||||
<location filename="../ImportDialog.cpp" line="316"/>
|
||||
<location filename="../ImportDialog.cpp" line="510"/>
|
||||
<location filename="../ProfileInterface.cpp" line="482"/>
|
||||
<location filename="../ProfileInterface.cpp" line="548"/>
|
||||
<location filename="../ProfileInterface.cpp" line="857"/>
|
||||
|
@ -1140,12 +1160,12 @@ Press 1 for Default View</source>
|
|||
<location filename="../ImageEditorDialog.cpp" line="110"/>
|
||||
<location filename="../ImageEditorDialog.cpp" line="141"/>
|
||||
<location filename="../ImageEditorDialog.cpp" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="273"/>
|
||||
<location filename="../ImportDialog.cpp" line="304"/>
|
||||
<location filename="../ImportDialog.cpp" line="313"/>
|
||||
<location filename="../ImportDialog.cpp" line="467"/>
|
||||
<location filename="../ImportDialog.cpp" line="498"/>
|
||||
<location filename="../ImportDialog.cpp" line="507"/>
|
||||
<location filename="../ImportDialog.cpp" line="317"/>
|
||||
<location filename="../ImportDialog.cpp" line="348"/>
|
||||
<location filename="../ImportDialog.cpp" line="357"/>
|
||||
<location filename="../ImportDialog.cpp" line="511"/>
|
||||
<location filename="../ImportDialog.cpp" line="542"/>
|
||||
<location filename="../ImportDialog.cpp" line="551"/>
|
||||
<location filename="../ProfileInterface.cpp" line="483"/>
|
||||
<location filename="../ProfileInterface.cpp" line="527"/>
|
||||
<location filename="../ProfileInterface.cpp" line="582"/>
|
||||
|
@ -1188,16 +1208,16 @@ Press 1 for Default View</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="120"/>
|
||||
<location filename="../ImportDialog.cpp" line="283"/>
|
||||
<location filename="../ImportDialog.cpp" line="477"/>
|
||||
<location filename="../ImportDialog.cpp" line="327"/>
|
||||
<location filename="../ImportDialog.cpp" line="521"/>
|
||||
<location filename="../ProfileInterface.cpp" line="502"/>
|
||||
<source>All image files (%1)</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="121"/>
|
||||
<location filename="../ImportDialog.cpp" line="284"/>
|
||||
<location filename="../ImportDialog.cpp" line="478"/>
|
||||
<location filename="../ImportDialog.cpp" line="328"/>
|
||||
<location filename="../ImportDialog.cpp" line="522"/>
|
||||
<location filename="../ProfileInterface.cpp" line="503"/>
|
||||
<location filename="../UserInterface.cpp" line="463"/>
|
||||
<source>All files (**)</source>
|
||||
|
@ -1237,16 +1257,16 @@ Press 1 for Default View</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="141"/>
|
||||
<location filename="../ImportDialog.cpp" line="304"/>
|
||||
<location filename="../ImportDialog.cpp" line="498"/>
|
||||
<location filename="../ImportDialog.cpp" line="348"/>
|
||||
<location filename="../ImportDialog.cpp" line="542"/>
|
||||
<location filename="../ProfileInterface.cpp" line="725"/>
|
||||
<source>Can't import %1 because file can't be open</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="313"/>
|
||||
<location filename="../ImportDialog.cpp" line="507"/>
|
||||
<location filename="../ImportDialog.cpp" line="357"/>
|
||||
<location filename="../ImportDialog.cpp" line="551"/>
|
||||
<location filename="../ProfileInterface.cpp" line="735"/>
|
||||
<source>Can't import %1 because file can't be parsed properly</source>
|
||||
<translation></translation>
|
||||
|
|
|
@ -262,8 +262,8 @@ et les fichiers de sauvegarde de Grand Theft Auto V</translation>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="84"/>
|
||||
<location filename="../ImportDialog.cpp" line="447"/>
|
||||
<location filename="../ImportDialog.cpp" line="85"/>
|
||||
<location filename="../ImportDialog.cpp" line="491"/>
|
||||
<source>Background Colour: <span style="color: %1">%1</span></source>
|
||||
<translation>Couleur de fond : <span style="color: %1">%1</span></translation>
|
||||
</message>
|
||||
|
@ -289,7 +289,7 @@ et les fichiers de sauvegarde de Grand Theft Auto V</translation>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="512"/>
|
||||
<location filename="../ImportDialog.cpp" line="556"/>
|
||||
<source>Background Image: %1</source>
|
||||
<translation>Image de fond : %1</translation>
|
||||
</message>
|
||||
|
@ -314,70 +314,90 @@ et les fichiers de sauvegarde de Grand Theft Auto V</translation>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="334"/>
|
||||
<location filename="../ImportDialog.ui" line="337"/>
|
||||
<source>Import picture</source>
|
||||
<translation>Importer l'image</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="337"/>
|
||||
<location filename="../ImportDialog.ui" line="340"/>
|
||||
<source>&OK</source>
|
||||
<translation>&OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="350"/>
|
||||
<location filename="../ImportDialog.ui" line="353"/>
|
||||
<source>Discard picture</source>
|
||||
<translation>Supprimer l'image</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="353"/>
|
||||
<location filename="../ImportDialog.ui" line="356"/>
|
||||
<source>&Cancel</source>
|
||||
<translation>A&nnuler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="203"/>
|
||||
<location filename="../ImportDialog.cpp" line="85"/>
|
||||
<location filename="../ImportDialog.cpp" line="527"/>
|
||||
<location filename="../ImportDialog.cpp" line="86"/>
|
||||
<location filename="../ImportDialog.cpp" line="571"/>
|
||||
<source>Background Image:</source>
|
||||
<translation>Image de fond :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="110"/>
|
||||
<location filename="../ImportDialog.cpp" line="111"/>
|
||||
<source>&Import new Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="183"/>
|
||||
<location filename="../ImportDialog.cpp" line="112"/>
|
||||
<source>&Crop Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="185"/>
|
||||
<location filename="../ProfileInterface.cpp" line="668"/>
|
||||
<source>Custom Avatar</source>
|
||||
<comment>Custom Avatar Description in SC, don't use Special Character!</comment>
|
||||
<translation>Avatar personnalisé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="210"/>
|
||||
<location filename="../ImportDialog.cpp" line="212"/>
|
||||
<location filename="../ProfileInterface.cpp" line="687"/>
|
||||
<source>Custom Picture</source>
|
||||
<comment>Custom Picture Description in SC, don't use Special Character!</comment>
|
||||
<translation>Image personnalisé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="394"/>
|
||||
<location filename="../ImportDialog.cpp" line="265"/>
|
||||
<source>Crop Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="287"/>
|
||||
<source>&Crop</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="288"/>
|
||||
<source>Crop Picture</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="438"/>
|
||||
<source>Are you sure to use a square image outside of the Avatar Zone?
|
||||
When you want to use it as Avatar the image will be detached!</source>
|
||||
<translation>Êtes-vous sûr d'utiliser une image carrée en dehors de la Zone d'Avatar ?
|
||||
Si vous l'utilisez comme Avatar, l'image sera détachée !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="394"/>
|
||||
<location filename="../ImportDialog.cpp" line="438"/>
|
||||
<source>Snapmatic Avatar Zone</source>
|
||||
<translation>Zone d'Avatar Snapmatic</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="443"/>
|
||||
<location filename="../ImportDialog.cpp" line="487"/>
|
||||
<source>Select Colour...</source>
|
||||
<translation>Choisir une couleur...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="512"/>
|
||||
<location filename="../ImportDialog.cpp" line="556"/>
|
||||
<source>File</source>
|
||||
<comment>Background Image: File</comment>
|
||||
<translation>Fichier</translation>
|
||||
|
@ -1146,8 +1166,8 @@ Appuyer sur 1 pour le mode par défaut</translation>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="109"/>
|
||||
<location filename="../ImportDialog.cpp" line="272"/>
|
||||
<location filename="../ImportDialog.cpp" line="466"/>
|
||||
<location filename="../ImportDialog.cpp" line="316"/>
|
||||
<location filename="../ImportDialog.cpp" line="510"/>
|
||||
<location filename="../ProfileInterface.cpp" line="482"/>
|
||||
<location filename="../ProfileInterface.cpp" line="548"/>
|
||||
<location filename="../ProfileInterface.cpp" line="857"/>
|
||||
|
@ -1158,12 +1178,12 @@ Appuyer sur 1 pour le mode par défaut</translation>
|
|||
<location filename="../ImageEditorDialog.cpp" line="110"/>
|
||||
<location filename="../ImageEditorDialog.cpp" line="141"/>
|
||||
<location filename="../ImageEditorDialog.cpp" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="273"/>
|
||||
<location filename="../ImportDialog.cpp" line="304"/>
|
||||
<location filename="../ImportDialog.cpp" line="313"/>
|
||||
<location filename="../ImportDialog.cpp" line="467"/>
|
||||
<location filename="../ImportDialog.cpp" line="498"/>
|
||||
<location filename="../ImportDialog.cpp" line="507"/>
|
||||
<location filename="../ImportDialog.cpp" line="317"/>
|
||||
<location filename="../ImportDialog.cpp" line="348"/>
|
||||
<location filename="../ImportDialog.cpp" line="357"/>
|
||||
<location filename="../ImportDialog.cpp" line="511"/>
|
||||
<location filename="../ImportDialog.cpp" line="542"/>
|
||||
<location filename="../ImportDialog.cpp" line="551"/>
|
||||
<location filename="../ProfileInterface.cpp" line="483"/>
|
||||
<location filename="../ProfileInterface.cpp" line="527"/>
|
||||
<location filename="../ProfileInterface.cpp" line="582"/>
|
||||
|
@ -1195,16 +1215,16 @@ Appuyer sur 1 pour le mode par défaut</translation>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="120"/>
|
||||
<location filename="../ImportDialog.cpp" line="283"/>
|
||||
<location filename="../ImportDialog.cpp" line="477"/>
|
||||
<location filename="../ImportDialog.cpp" line="327"/>
|
||||
<location filename="../ImportDialog.cpp" line="521"/>
|
||||
<location filename="../ProfileInterface.cpp" line="502"/>
|
||||
<source>All image files (%1)</source>
|
||||
<translation>Toutes les images (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="121"/>
|
||||
<location filename="../ImportDialog.cpp" line="284"/>
|
||||
<location filename="../ImportDialog.cpp" line="478"/>
|
||||
<location filename="../ImportDialog.cpp" line="328"/>
|
||||
<location filename="../ImportDialog.cpp" line="522"/>
|
||||
<location filename="../ProfileInterface.cpp" line="503"/>
|
||||
<location filename="../UserInterface.cpp" line="463"/>
|
||||
<source>All files (**)</source>
|
||||
|
@ -1251,16 +1271,16 @@ Appuyer sur 1 pour le mode par défaut</translation>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="141"/>
|
||||
<location filename="../ImportDialog.cpp" line="304"/>
|
||||
<location filename="../ImportDialog.cpp" line="498"/>
|
||||
<location filename="../ImportDialog.cpp" line="348"/>
|
||||
<location filename="../ImportDialog.cpp" line="542"/>
|
||||
<location filename="../ProfileInterface.cpp" line="725"/>
|
||||
<source>Can't import %1 because file can't be open</source>
|
||||
<translation>Impossible d'importer %1, le fichier ne peut pas être ouvert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="313"/>
|
||||
<location filename="../ImportDialog.cpp" line="507"/>
|
||||
<location filename="../ImportDialog.cpp" line="357"/>
|
||||
<location filename="../ImportDialog.cpp" line="551"/>
|
||||
<location filename="../ProfileInterface.cpp" line="735"/>
|
||||
<source>Can't import %1 because file can't be parsed properly</source>
|
||||
<translation>Impossible d'importer %1, le fichier ne peut pas être parsé correctement</translation>
|
||||
|
|
|
@ -264,8 +264,8 @@ Pictures and Savegames</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="84"/>
|
||||
<location filename="../ImportDialog.cpp" line="447"/>
|
||||
<location filename="../ImportDialog.cpp" line="85"/>
|
||||
<location filename="../ImportDialog.cpp" line="491"/>
|
||||
<source>Background Colour: <span style="color: %1">%1</span></source>
|
||||
<translation>Цвет фона: <span style="color: %1">%1</span></translation>
|
||||
</message>
|
||||
|
@ -291,7 +291,7 @@ Pictures and Savegames</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="512"/>
|
||||
<location filename="../ImportDialog.cpp" line="556"/>
|
||||
<source>Background Image: %1</source>
|
||||
<translation>Фоновая картинка: %1</translation>
|
||||
</message>
|
||||
|
@ -317,70 +317,90 @@ Pictures and Savegames</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="334"/>
|
||||
<location filename="../ImportDialog.ui" line="337"/>
|
||||
<source>Import picture</source>
|
||||
<translation>Импортировать картинку</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="337"/>
|
||||
<location filename="../ImportDialog.ui" line="340"/>
|
||||
<source>&OK</source>
|
||||
<translation>&ОК</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="350"/>
|
||||
<location filename="../ImportDialog.ui" line="353"/>
|
||||
<source>Discard picture</source>
|
||||
<translation>Отклонить картинку</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="353"/>
|
||||
<location filename="../ImportDialog.ui" line="356"/>
|
||||
<source>&Cancel</source>
|
||||
<translatorcomment>Я не уверен насчет горячих клавиш...</translatorcomment>
|
||||
<translation>От&мена</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="203"/>
|
||||
<location filename="../ImportDialog.cpp" line="85"/>
|
||||
<location filename="../ImportDialog.cpp" line="527"/>
|
||||
<location filename="../ImportDialog.cpp" line="86"/>
|
||||
<location filename="../ImportDialog.cpp" line="571"/>
|
||||
<source>Background Image:</source>
|
||||
<translation>Фоновая картинка:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="110"/>
|
||||
<location filename="../ImportDialog.cpp" line="111"/>
|
||||
<source>&Import new Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="183"/>
|
||||
<location filename="../ImportDialog.cpp" line="112"/>
|
||||
<source>&Crop Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="185"/>
|
||||
<location filename="../ProfileInterface.cpp" line="668"/>
|
||||
<source>Custom Avatar</source>
|
||||
<comment>Custom Avatar Description in SC, don't use Special Character!</comment>
|
||||
<translation>Свой Аватар</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="210"/>
|
||||
<location filename="../ImportDialog.cpp" line="212"/>
|
||||
<location filename="../ProfileInterface.cpp" line="687"/>
|
||||
<source>Custom Picture</source>
|
||||
<comment>Custom Picture Description in SC, don't use Special Character!</comment>
|
||||
<translation>Своя Картинка</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="394"/>
|
||||
<location filename="../ImportDialog.cpp" line="265"/>
|
||||
<source>Crop Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="287"/>
|
||||
<source>&Crop</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="288"/>
|
||||
<source>Crop Picture</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="438"/>
|
||||
<source>Are you sure to use a square image outside of the Avatar Zone?
|
||||
When you want to use it as Avatar the image will be detached!</source>
|
||||
<translation>Ты точно хочешь использовать квадратное изображение вне зоны аватарки? Если это аватар, то изображение будет обрезано!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="394"/>
|
||||
<location filename="../ImportDialog.cpp" line="438"/>
|
||||
<source>Snapmatic Avatar Zone</source>
|
||||
<translation>Зона Snapmatic Аватарки</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="443"/>
|
||||
<location filename="../ImportDialog.cpp" line="487"/>
|
||||
<source>Select Colour...</source>
|
||||
<translation>Выбрать цвет...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="512"/>
|
||||
<location filename="../ImportDialog.cpp" line="556"/>
|
||||
<source>File</source>
|
||||
<comment>Background Image: File</comment>
|
||||
<translation>Файл</translation>
|
||||
|
@ -1140,8 +1160,8 @@ Press 1 for Default View</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="109"/>
|
||||
<location filename="../ImportDialog.cpp" line="272"/>
|
||||
<location filename="../ImportDialog.cpp" line="466"/>
|
||||
<location filename="../ImportDialog.cpp" line="316"/>
|
||||
<location filename="../ImportDialog.cpp" line="510"/>
|
||||
<location filename="../ProfileInterface.cpp" line="482"/>
|
||||
<location filename="../ProfileInterface.cpp" line="548"/>
|
||||
<location filename="../ProfileInterface.cpp" line="857"/>
|
||||
|
@ -1152,12 +1172,12 @@ Press 1 for Default View</source>
|
|||
<location filename="../ImageEditorDialog.cpp" line="110"/>
|
||||
<location filename="../ImageEditorDialog.cpp" line="141"/>
|
||||
<location filename="../ImageEditorDialog.cpp" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="273"/>
|
||||
<location filename="../ImportDialog.cpp" line="304"/>
|
||||
<location filename="../ImportDialog.cpp" line="313"/>
|
||||
<location filename="../ImportDialog.cpp" line="467"/>
|
||||
<location filename="../ImportDialog.cpp" line="498"/>
|
||||
<location filename="../ImportDialog.cpp" line="507"/>
|
||||
<location filename="../ImportDialog.cpp" line="317"/>
|
||||
<location filename="../ImportDialog.cpp" line="348"/>
|
||||
<location filename="../ImportDialog.cpp" line="357"/>
|
||||
<location filename="../ImportDialog.cpp" line="511"/>
|
||||
<location filename="../ImportDialog.cpp" line="542"/>
|
||||
<location filename="../ImportDialog.cpp" line="551"/>
|
||||
<location filename="../ProfileInterface.cpp" line="483"/>
|
||||
<location filename="../ProfileInterface.cpp" line="527"/>
|
||||
<location filename="../ProfileInterface.cpp" line="582"/>
|
||||
|
@ -1189,8 +1209,8 @@ Press 1 for Default View</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="121"/>
|
||||
<location filename="../ImportDialog.cpp" line="284"/>
|
||||
<location filename="../ImportDialog.cpp" line="478"/>
|
||||
<location filename="../ImportDialog.cpp" line="328"/>
|
||||
<location filename="../ImportDialog.cpp" line="522"/>
|
||||
<location filename="../ProfileInterface.cpp" line="503"/>
|
||||
<location filename="../UserInterface.cpp" line="463"/>
|
||||
<source>All files (**)</source>
|
||||
|
@ -1242,24 +1262,24 @@ Press 1 for Default View</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="120"/>
|
||||
<location filename="../ImportDialog.cpp" line="283"/>
|
||||
<location filename="../ImportDialog.cpp" line="477"/>
|
||||
<location filename="../ImportDialog.cpp" line="327"/>
|
||||
<location filename="../ImportDialog.cpp" line="521"/>
|
||||
<location filename="../ProfileInterface.cpp" line="502"/>
|
||||
<source>All image files (%1)</source>
|
||||
<translation>Все файлы изображений (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="141"/>
|
||||
<location filename="../ImportDialog.cpp" line="304"/>
|
||||
<location filename="../ImportDialog.cpp" line="498"/>
|
||||
<location filename="../ImportDialog.cpp" line="348"/>
|
||||
<location filename="../ImportDialog.cpp" line="542"/>
|
||||
<location filename="../ProfileInterface.cpp" line="725"/>
|
||||
<source>Can't import %1 because file can't be open</source>
|
||||
<translation>Не удалось открыть %1, файл не может быть открыт</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="313"/>
|
||||
<location filename="../ImportDialog.cpp" line="507"/>
|
||||
<location filename="../ImportDialog.cpp" line="357"/>
|
||||
<location filename="../ImportDialog.cpp" line="551"/>
|
||||
<location filename="../ProfileInterface.cpp" line="735"/>
|
||||
<source>Can't import %1 because file can't be parsed properly</source>
|
||||
<translation>Не получилось импортировать %1, файл не может быть правильно обработан</translation>
|
||||
|
|
|
@ -262,8 +262,8 @@ Pictures and Savegames</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="84"/>
|
||||
<location filename="../ImportDialog.cpp" line="447"/>
|
||||
<location filename="../ImportDialog.cpp" line="85"/>
|
||||
<location filename="../ImportDialog.cpp" line="491"/>
|
||||
<source>Background Colour: <span style="color: %1">%1</span></source>
|
||||
<translation>Фоновий колір: <span style="color: %1">%1</span></translation>
|
||||
</message>
|
||||
|
@ -280,8 +280,8 @@ Pictures and Savegames</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="203"/>
|
||||
<location filename="../ImportDialog.cpp" line="85"/>
|
||||
<location filename="../ImportDialog.cpp" line="527"/>
|
||||
<location filename="../ImportDialog.cpp" line="86"/>
|
||||
<location filename="../ImportDialog.cpp" line="571"/>
|
||||
<source>Background Image:</source>
|
||||
<translation>Фонове зображення:</translation>
|
||||
</message>
|
||||
|
@ -316,68 +316,88 @@ Pictures and Savegames</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="334"/>
|
||||
<location filename="../ImportDialog.ui" line="337"/>
|
||||
<source>Import picture</source>
|
||||
<translation>Імпортувати зображення</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="337"/>
|
||||
<location filename="../ImportDialog.ui" line="340"/>
|
||||
<source>&OK</source>
|
||||
<translation>&OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="350"/>
|
||||
<location filename="../ImportDialog.ui" line="353"/>
|
||||
<source>Discard picture</source>
|
||||
<translation>Відхилити зображення</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="353"/>
|
||||
<location filename="../ImportDialog.ui" line="356"/>
|
||||
<source>&Cancel</source>
|
||||
<translation>&Скасувати</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="110"/>
|
||||
<location filename="../ImportDialog.cpp" line="111"/>
|
||||
<source>&Import new Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="183"/>
|
||||
<location filename="../ImportDialog.cpp" line="112"/>
|
||||
<source>&Crop Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="185"/>
|
||||
<location filename="../ProfileInterface.cpp" line="668"/>
|
||||
<source>Custom Avatar</source>
|
||||
<comment>Custom Avatar Description in SC, don't use Special Character!</comment>
|
||||
<translation>Користувацький Аватар</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="210"/>
|
||||
<location filename="../ImportDialog.cpp" line="212"/>
|
||||
<location filename="../ProfileInterface.cpp" line="687"/>
|
||||
<source>Custom Picture</source>
|
||||
<comment>Custom Picture Description in SC, don't use Special Character!</comment>
|
||||
<translation>Користувацьке Зображення</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="394"/>
|
||||
<location filename="../ImportDialog.cpp" line="265"/>
|
||||
<source>Crop Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="287"/>
|
||||
<source>&Crop</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="288"/>
|
||||
<source>Crop Picture</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="438"/>
|
||||
<source>Snapmatic Avatar Zone</source>
|
||||
<translation>Зона Snapmatic Аватару</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="394"/>
|
||||
<location filename="../ImportDialog.cpp" line="438"/>
|
||||
<source>Are you sure to use a square image outside of the Avatar Zone?
|
||||
When you want to use it as Avatar the image will be detached!</source>
|
||||
<translation>Ви впевнені, що будете використовувати квадратне зображення поза зоною аватара?
|
||||
Якщо ви хочете використовувати його як Аватар, зображення буде відокремлено!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="443"/>
|
||||
<location filename="../ImportDialog.cpp" line="487"/>
|
||||
<source>Select Colour...</source>
|
||||
<translation>Вибір кольору...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="512"/>
|
||||
<location filename="../ImportDialog.cpp" line="556"/>
|
||||
<source>Background Image: %1</source>
|
||||
<translation>Фонове зображення: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="512"/>
|
||||
<location filename="../ImportDialog.cpp" line="556"/>
|
||||
<source>File</source>
|
||||
<comment>Background Image: File</comment>
|
||||
<translation>Файл</translation>
|
||||
|
@ -1126,8 +1146,8 @@ Press 1 for Default View</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="109"/>
|
||||
<location filename="../ImportDialog.cpp" line="272"/>
|
||||
<location filename="../ImportDialog.cpp" line="466"/>
|
||||
<location filename="../ImportDialog.cpp" line="316"/>
|
||||
<location filename="../ImportDialog.cpp" line="510"/>
|
||||
<location filename="../ProfileInterface.cpp" line="482"/>
|
||||
<location filename="../ProfileInterface.cpp" line="548"/>
|
||||
<location filename="../ProfileInterface.cpp" line="857"/>
|
||||
|
@ -1138,12 +1158,12 @@ Press 1 for Default View</source>
|
|||
<location filename="../ImageEditorDialog.cpp" line="110"/>
|
||||
<location filename="../ImageEditorDialog.cpp" line="141"/>
|
||||
<location filename="../ImageEditorDialog.cpp" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="273"/>
|
||||
<location filename="../ImportDialog.cpp" line="304"/>
|
||||
<location filename="../ImportDialog.cpp" line="313"/>
|
||||
<location filename="../ImportDialog.cpp" line="467"/>
|
||||
<location filename="../ImportDialog.cpp" line="498"/>
|
||||
<location filename="../ImportDialog.cpp" line="507"/>
|
||||
<location filename="../ImportDialog.cpp" line="317"/>
|
||||
<location filename="../ImportDialog.cpp" line="348"/>
|
||||
<location filename="../ImportDialog.cpp" line="357"/>
|
||||
<location filename="../ImportDialog.cpp" line="511"/>
|
||||
<location filename="../ImportDialog.cpp" line="542"/>
|
||||
<location filename="../ImportDialog.cpp" line="551"/>
|
||||
<location filename="../ProfileInterface.cpp" line="483"/>
|
||||
<location filename="../ProfileInterface.cpp" line="527"/>
|
||||
<location filename="../ProfileInterface.cpp" line="582"/>
|
||||
|
@ -1163,16 +1183,16 @@ Press 1 for Default View</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="120"/>
|
||||
<location filename="../ImportDialog.cpp" line="283"/>
|
||||
<location filename="../ImportDialog.cpp" line="477"/>
|
||||
<location filename="../ImportDialog.cpp" line="327"/>
|
||||
<location filename="../ImportDialog.cpp" line="521"/>
|
||||
<location filename="../ProfileInterface.cpp" line="502"/>
|
||||
<source>All image files (%1)</source>
|
||||
<translation>Файли зображень (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="121"/>
|
||||
<location filename="../ImportDialog.cpp" line="284"/>
|
||||
<location filename="../ImportDialog.cpp" line="478"/>
|
||||
<location filename="../ImportDialog.cpp" line="328"/>
|
||||
<location filename="../ImportDialog.cpp" line="522"/>
|
||||
<location filename="../ProfileInterface.cpp" line="503"/>
|
||||
<location filename="../UserInterface.cpp" line="463"/>
|
||||
<source>All files (**)</source>
|
||||
|
@ -1180,16 +1200,16 @@ Press 1 for Default View</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="141"/>
|
||||
<location filename="../ImportDialog.cpp" line="304"/>
|
||||
<location filename="../ImportDialog.cpp" line="498"/>
|
||||
<location filename="../ImportDialog.cpp" line="348"/>
|
||||
<location filename="../ImportDialog.cpp" line="542"/>
|
||||
<location filename="../ProfileInterface.cpp" line="725"/>
|
||||
<source>Can't import %1 because file can't be open</source>
|
||||
<translation>Неможливо імпортувати %1, оскільки файл не може бути відкритий</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="313"/>
|
||||
<location filename="../ImportDialog.cpp" line="507"/>
|
||||
<location filename="../ImportDialog.cpp" line="357"/>
|
||||
<location filename="../ImportDialog.cpp" line="551"/>
|
||||
<location filename="../ProfileInterface.cpp" line="735"/>
|
||||
<source>Can't import %1 because file can't be parsed properly</source>
|
||||
<translation>Неможливо імпортувати %1, оскільки файл неможливо розібрати правильно</translation>
|
||||
|
|
|
@ -261,8 +261,8 @@ Pictures and Savegames</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="84"/>
|
||||
<location filename="../ImportDialog.cpp" line="447"/>
|
||||
<location filename="../ImportDialog.cpp" line="85"/>
|
||||
<location filename="../ImportDialog.cpp" line="491"/>
|
||||
<source>Background Colour: <span style="color: %1">%1</span></source>
|
||||
<translation>背景顏色: <span style="color: %1">%1</span></translation>
|
||||
</message>
|
||||
|
@ -279,8 +279,8 @@ Pictures and Savegames</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="203"/>
|
||||
<location filename="../ImportDialog.cpp" line="85"/>
|
||||
<location filename="../ImportDialog.cpp" line="527"/>
|
||||
<location filename="../ImportDialog.cpp" line="86"/>
|
||||
<location filename="../ImportDialog.cpp" line="571"/>
|
||||
<source>Background Image:</source>
|
||||
<translation>背景圖片:</translation>
|
||||
</message>
|
||||
|
@ -315,67 +315,87 @@ Pictures and Savegames</source>
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="334"/>
|
||||
<location filename="../ImportDialog.ui" line="337"/>
|
||||
<source>Import picture</source>
|
||||
<translation>匯入圖片</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="337"/>
|
||||
<location filename="../ImportDialog.ui" line="340"/>
|
||||
<source>&OK</source>
|
||||
<translation>確定(&O)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="350"/>
|
||||
<location filename="../ImportDialog.ui" line="353"/>
|
||||
<source>Discard picture</source>
|
||||
<translation>捨棄圖片</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.ui" line="353"/>
|
||||
<location filename="../ImportDialog.ui" line="356"/>
|
||||
<source>&Cancel</source>
|
||||
<translation>取消(&C)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="110"/>
|
||||
<location filename="../ImportDialog.cpp" line="111"/>
|
||||
<source>&Import new Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="183"/>
|
||||
<location filename="../ImportDialog.cpp" line="112"/>
|
||||
<source>&Crop Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="185"/>
|
||||
<location filename="../ProfileInterface.cpp" line="668"/>
|
||||
<source>Custom Avatar</source>
|
||||
<comment>Custom Avatar Description in SC, don't use Special Character!</comment>
|
||||
<translation>自訂大頭貼</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="210"/>
|
||||
<location filename="../ImportDialog.cpp" line="212"/>
|
||||
<location filename="../ProfileInterface.cpp" line="687"/>
|
||||
<source>Custom Picture</source>
|
||||
<comment>Custom Picture Description in SC, don't use Special Character!</comment>
|
||||
<translation>自訂圖片</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="394"/>
|
||||
<location filename="../ImportDialog.cpp" line="265"/>
|
||||
<source>Crop Picture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="287"/>
|
||||
<source>&Crop</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="288"/>
|
||||
<source>Crop Picture</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="438"/>
|
||||
<source>Snapmatic Avatar Zone</source>
|
||||
<translation>Snapmatic 大頭貼區域</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="394"/>
|
||||
<location filename="../ImportDialog.cpp" line="438"/>
|
||||
<source>Are you sure to use a square image outside of the Avatar Zone?
|
||||
When you want to use it as Avatar the image will be detached!</source>
|
||||
<translation>你確定要在大頭貼區域以外的地方使用方形圖片嗎? 作為大頭貼的圖片將被分離!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="443"/>
|
||||
<location filename="../ImportDialog.cpp" line="487"/>
|
||||
<source>Select Colour...</source>
|
||||
<translation>選擇顏色...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="512"/>
|
||||
<location filename="../ImportDialog.cpp" line="556"/>
|
||||
<source>Background Image: %1</source>
|
||||
<translation>背景圖片: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImportDialog.cpp" line="512"/>
|
||||
<location filename="../ImportDialog.cpp" line="556"/>
|
||||
<source>File</source>
|
||||
<comment>Background Image: File</comment>
|
||||
<translation>文件</translation>
|
||||
|
@ -1124,8 +1144,8 @@ Press 1 for Default View</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="109"/>
|
||||
<location filename="../ImportDialog.cpp" line="272"/>
|
||||
<location filename="../ImportDialog.cpp" line="466"/>
|
||||
<location filename="../ImportDialog.cpp" line="316"/>
|
||||
<location filename="../ImportDialog.cpp" line="510"/>
|
||||
<location filename="../ProfileInterface.cpp" line="482"/>
|
||||
<location filename="../ProfileInterface.cpp" line="548"/>
|
||||
<location filename="../ProfileInterface.cpp" line="857"/>
|
||||
|
@ -1136,12 +1156,12 @@ Press 1 for Default View</source>
|
|||
<location filename="../ImageEditorDialog.cpp" line="110"/>
|
||||
<location filename="../ImageEditorDialog.cpp" line="141"/>
|
||||
<location filename="../ImageEditorDialog.cpp" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="273"/>
|
||||
<location filename="../ImportDialog.cpp" line="304"/>
|
||||
<location filename="../ImportDialog.cpp" line="313"/>
|
||||
<location filename="../ImportDialog.cpp" line="467"/>
|
||||
<location filename="../ImportDialog.cpp" line="498"/>
|
||||
<location filename="../ImportDialog.cpp" line="507"/>
|
||||
<location filename="../ImportDialog.cpp" line="317"/>
|
||||
<location filename="../ImportDialog.cpp" line="348"/>
|
||||
<location filename="../ImportDialog.cpp" line="357"/>
|
||||
<location filename="../ImportDialog.cpp" line="511"/>
|
||||
<location filename="../ImportDialog.cpp" line="542"/>
|
||||
<location filename="../ImportDialog.cpp" line="551"/>
|
||||
<location filename="../ProfileInterface.cpp" line="483"/>
|
||||
<location filename="../ProfileInterface.cpp" line="527"/>
|
||||
<location filename="../ProfileInterface.cpp" line="582"/>
|
||||
|
@ -1161,16 +1181,16 @@ Press 1 for Default View</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="120"/>
|
||||
<location filename="../ImportDialog.cpp" line="283"/>
|
||||
<location filename="../ImportDialog.cpp" line="477"/>
|
||||
<location filename="../ImportDialog.cpp" line="327"/>
|
||||
<location filename="../ImportDialog.cpp" line="521"/>
|
||||
<location filename="../ProfileInterface.cpp" line="502"/>
|
||||
<source>All image files (%1)</source>
|
||||
<translation>所有圖片 (%1)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="121"/>
|
||||
<location filename="../ImportDialog.cpp" line="284"/>
|
||||
<location filename="../ImportDialog.cpp" line="478"/>
|
||||
<location filename="../ImportDialog.cpp" line="328"/>
|
||||
<location filename="../ImportDialog.cpp" line="522"/>
|
||||
<location filename="../ProfileInterface.cpp" line="503"/>
|
||||
<location filename="../UserInterface.cpp" line="463"/>
|
||||
<source>All files (**)</source>
|
||||
|
@ -1178,16 +1198,16 @@ Press 1 for Default View</source>
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="141"/>
|
||||
<location filename="../ImportDialog.cpp" line="304"/>
|
||||
<location filename="../ImportDialog.cpp" line="498"/>
|
||||
<location filename="../ImportDialog.cpp" line="348"/>
|
||||
<location filename="../ImportDialog.cpp" line="542"/>
|
||||
<location filename="../ProfileInterface.cpp" line="725"/>
|
||||
<source>Can't import %1 because file can't be open</source>
|
||||
<translation>無法匯入 %1,因為檔案無法開啟</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ImageEditorDialog.cpp" line="150"/>
|
||||
<location filename="../ImportDialog.cpp" line="313"/>
|
||||
<location filename="../ImportDialog.cpp" line="507"/>
|
||||
<location filename="../ImportDialog.cpp" line="357"/>
|
||||
<location filename="../ImportDialog.cpp" line="551"/>
|
||||
<location filename="../ProfileInterface.cpp" line="735"/>
|
||||
<source>Can't import %1 because file can't be parsed properly</source>
|
||||
<translation>無法匯入 %1,因為檔案無法正確解析</translation>
|
||||
|
|
Loading…
Reference in a new issue