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 "ui_ImportDialog.h" | ||||||
| #include "SidebarGenerator.h" | #include "SidebarGenerator.h" | ||||||
| #include "StandardPaths.h" | #include "StandardPaths.h" | ||||||
|  | #include "imagecropper.h" | ||||||
| #include "AppEnv.h" | #include "AppEnv.h" | ||||||
| #include "config.h" | #include "config.h" | ||||||
| #include <QStringBuilder> | #include <QStringBuilder> | ||||||
|  | @ -108,6 +109,7 @@ ImportDialog::ImportDialog(QString profileName, QWidget *parent) : | ||||||
|     // Options menu
 |     // Options menu
 | ||||||
|     optionsMenu = new QMenu(this); |     optionsMenu = new QMenu(this); | ||||||
|     optionsMenu->addAction(tr("&Import new Picture..."), this, SLOT(importNewPicture())); |     optionsMenu->addAction(tr("&Import new Picture..."), this, SLOT(importNewPicture())); | ||||||
|  |     optionsMenu->addAction(tr("&Crop Picture..."), this, SLOT(cropPicture())); | ||||||
|     ui->cmdOptions->setMenu(optionsMenu); |     ui->cmdOptions->setMenu(optionsMenu); | ||||||
| 
 | 
 | ||||||
|     setMaximumSize(sizeHint()); |     setMaximumSize(sizeHint()); | ||||||
|  | @ -255,6 +257,48 @@ void ImportDialog::processWatermark(QPainter *snapmaticPainter) | ||||||
|     snapmaticPainter->drawImage(0, 0, textWatermark); |     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() | void ImportDialog::importNewPicture() | ||||||
| { | { | ||||||
|     QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); |     QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); | ||||||
|  |  | ||||||
|  | @ -40,6 +40,7 @@ public: | ||||||
| 
 | 
 | ||||||
| private slots: | private slots: | ||||||
|     void processImage(); |     void processImage(); | ||||||
|  |     void cropPicture(); | ||||||
|     void importNewPicture(); |     void importNewPicture(); | ||||||
|     void on_cbIgnore_toggled(bool checked); |     void on_cbIgnore_toggled(bool checked); | ||||||
|     void on_cbAvatar_toggled(bool checked); |     void on_cbAvatar_toggled(bool checked); | ||||||
|  |  | ||||||
|  | @ -307,6 +307,9 @@ | ||||||
|           <property name="text"> |           <property name="text"> | ||||||
|            <string>&Options</string> |            <string>&Options</string> | ||||||
|           </property> |           </property> | ||||||
|  |           <property name="autoDefault"> | ||||||
|  |            <bool>false</bool> | ||||||
|  |           </property> | ||||||
|          </widget> |          </widget> | ||||||
|         </item> |         </item> | ||||||
|         <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 \ |     TelemetryClass.cpp \ | ||||||
|     TranslationClass.cpp \ |     TranslationClass.cpp \ | ||||||
|     UserInterface.cpp \ |     UserInterface.cpp \ | ||||||
|     anpro/JSHighlighter.cpp \ |     anpro/imagecropper.cpp \ | ||||||
|     pcg/pcg_basic.c \ |     pcg/pcg_basic.c \ | ||||||
|     tmext/TelemetryClassAuthenticator.cpp \ |     tmext/TelemetryClassAuthenticator.cpp \ | ||||||
|  |     uimod/JSHighlighter.cpp \ | ||||||
|     uimod/UiModLabel.cpp \ |     uimod/UiModLabel.cpp \ | ||||||
|     uimod/UiModWidget.cpp |     uimod/UiModWidget.cpp | ||||||
| 
 | 
 | ||||||
|  | @ -104,9 +105,12 @@ HEADERS  += \ | ||||||
|     TelemetryClass.h \ |     TelemetryClass.h \ | ||||||
|     TranslationClass.h \ |     TranslationClass.h \ | ||||||
|     UserInterface.h \ |     UserInterface.h \ | ||||||
|     anpro/JSHighlighter.h \ |     anpro/imagecropper.h \ | ||||||
|  |     anpro/imagecropper_e.h \ | ||||||
|  |     anpro/imagecropper_p.h \ | ||||||
|     pcg/pcg_basic.h \ |     pcg/pcg_basic.h \ | ||||||
|     tmext/TelemetryClassAuthenticator.h \ |     tmext/TelemetryClassAuthenticator.h \ | ||||||
|  |     uimod/JSHighlighter.h \ | ||||||
|     uimod/UiModLabel.h \ |     uimod/UiModLabel.h \ | ||||||
|     uimod/UiModWidget.h |     uimod/UiModWidget.h | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -252,8 +252,8 @@ Pictures and Savegames</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="150"/> |         <location filename="../ImportDialog.ui" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="84"/> |         <location filename="../ImportDialog.cpp" line="85"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="447"/> |         <location filename="../ImportDialog.cpp" line="491"/> | ||||||
|         <source>Background Colour: <span style="color: %1">%1</span></source> |         <source>Background Colour: <span style="color: %1">%1</span></source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|  | @ -270,8 +270,8 @@ Pictures and Savegames</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="203"/> |         <location filename="../ImportDialog.ui" line="203"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="85"/> |         <location filename="../ImportDialog.cpp" line="86"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="527"/> |         <location filename="../ImportDialog.cpp" line="571"/> | ||||||
|         <source>Background Image:</source> |         <source>Background Image:</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|  | @ -306,67 +306,87 @@ Pictures and Savegames</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="334"/> |         <location filename="../ImportDialog.ui" line="337"/> | ||||||
|         <source>Import picture</source> |         <source>Import picture</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="337"/> |         <location filename="../ImportDialog.ui" line="340"/> | ||||||
|         <source>&OK</source> |         <source>&OK</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="350"/> |         <location filename="../ImportDialog.ui" line="353"/> | ||||||
|         <source>Discard picture</source> |         <source>Discard picture</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="353"/> |         <location filename="../ImportDialog.ui" line="356"/> | ||||||
|         <source>&Cancel</source> |         <source>&Cancel</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="110"/> |         <location filename="../ImportDialog.cpp" line="111"/> | ||||||
|         <source>&Import new Picture...</source> |         <source>&Import new Picture...</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <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"/> |         <location filename="../ProfileInterface.cpp" line="668"/> | ||||||
|         <source>Custom Avatar</source> |         <source>Custom Avatar</source> | ||||||
|         <comment>Custom Avatar Description in SC, don't use Special Character!</comment> |         <comment>Custom Avatar Description in SC, don't use Special Character!</comment> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="210"/> |         <location filename="../ImportDialog.cpp" line="212"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="687"/> |         <location filename="../ProfileInterface.cpp" line="687"/> | ||||||
|         <source>Custom Picture</source> |         <source>Custom Picture</source> | ||||||
|         <comment>Custom Picture Description in SC, don't use Special Character!</comment> |         <comment>Custom Picture Description in SC, don't use Special Character!</comment> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <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> |         <source>Snapmatic Avatar Zone</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <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? |         <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> | When you want to use it as Avatar the image will be detached!</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="443"/> |         <location filename="../ImportDialog.cpp" line="487"/> | ||||||
|         <source>Select Colour...</source> |         <source>Select Colour...</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="512"/> |         <location filename="../ImportDialog.cpp" line="556"/> | ||||||
|         <source>Background Image: %1</source> |         <source>Background Image: %1</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="512"/> |         <location filename="../ImportDialog.cpp" line="556"/> | ||||||
|         <source>File</source> |         <source>File</source> | ||||||
|         <comment>Background Image: File</comment> |         <comment>Background Image: File</comment> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|  | @ -1108,8 +1128,8 @@ Press 1 for Default View</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="109"/> |         <location filename="../ImageEditorDialog.cpp" line="109"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="272"/> |         <location filename="../ImportDialog.cpp" line="316"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="466"/> |         <location filename="../ImportDialog.cpp" line="510"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="482"/> |         <location filename="../ProfileInterface.cpp" line="482"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="548"/> |         <location filename="../ProfileInterface.cpp" line="548"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="857"/> |         <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="110"/> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="141"/> |         <location filename="../ImageEditorDialog.cpp" line="141"/> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="150"/> |         <location filename="../ImageEditorDialog.cpp" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="273"/> |         <location filename="../ImportDialog.cpp" line="317"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="304"/> |         <location filename="../ImportDialog.cpp" line="348"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="313"/> |         <location filename="../ImportDialog.cpp" line="357"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="467"/> |         <location filename="../ImportDialog.cpp" line="511"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="498"/> |         <location filename="../ImportDialog.cpp" line="542"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="507"/> |         <location filename="../ImportDialog.cpp" line="551"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="483"/> |         <location filename="../ProfileInterface.cpp" line="483"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="527"/> |         <location filename="../ProfileInterface.cpp" line="527"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="582"/> |         <location filename="../ProfileInterface.cpp" line="582"/> | ||||||
|  | @ -1145,16 +1165,16 @@ Press 1 for Default View</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="120"/> |         <location filename="../ImageEditorDialog.cpp" line="120"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="283"/> |         <location filename="../ImportDialog.cpp" line="327"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="477"/> |         <location filename="../ImportDialog.cpp" line="521"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="502"/> |         <location filename="../ProfileInterface.cpp" line="502"/> | ||||||
|         <source>All image files (%1)</source> |         <source>All image files (%1)</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="121"/> |         <location filename="../ImageEditorDialog.cpp" line="121"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="284"/> |         <location filename="../ImportDialog.cpp" line="328"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="478"/> |         <location filename="../ImportDialog.cpp" line="522"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="503"/> |         <location filename="../ProfileInterface.cpp" line="503"/> | ||||||
|         <location filename="../UserInterface.cpp" line="463"/> |         <location filename="../UserInterface.cpp" line="463"/> | ||||||
|         <source>All files (**)</source> |         <source>All files (**)</source> | ||||||
|  | @ -1162,16 +1182,16 @@ Press 1 for Default View</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="141"/> |         <location filename="../ImageEditorDialog.cpp" line="141"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="304"/> |         <location filename="../ImportDialog.cpp" line="348"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="498"/> |         <location filename="../ImportDialog.cpp" line="542"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="725"/> |         <location filename="../ProfileInterface.cpp" line="725"/> | ||||||
|         <source>Can't import %1 because file can't be open</source> |         <source>Can't import %1 because file can't be open</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="150"/> |         <location filename="../ImageEditorDialog.cpp" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="313"/> |         <location filename="../ImportDialog.cpp" line="357"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="507"/> |         <location filename="../ImportDialog.cpp" line="551"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="735"/> |         <location filename="../ProfileInterface.cpp" line="735"/> | ||||||
|         <source>Can't import %1 because file can't be parsed properly</source> |         <source>Can't import %1 because file can't be parsed properly</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|  |  | ||||||
										
											Binary file not shown.
										
									
								
							|  | @ -262,8 +262,8 @@ Snapmatic Bilder und Spielständen</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="150"/> |         <location filename="../ImportDialog.ui" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="84"/> |         <location filename="../ImportDialog.cpp" line="85"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="447"/> |         <location filename="../ImportDialog.cpp" line="491"/> | ||||||
|         <source>Background Colour: <span style="color: %1">%1</span></source> |         <source>Background Colour: <span style="color: %1">%1</span></source> | ||||||
|         <translation>Hintergrundfarbe: <span style="color: %1">%1</span></translation> |         <translation>Hintergrundfarbe: <span style="color: %1">%1</span></translation> | ||||||
|     </message> |     </message> | ||||||
|  | @ -289,7 +289,7 @@ Snapmatic Bilder und Spielständen</translation> | ||||||
|         <translation>Hintergrundbild entfernen</translation> |         <translation>Hintergrundbild entfernen</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="512"/> |         <location filename="../ImportDialog.cpp" line="556"/> | ||||||
|         <source>Background Image: %1</source> |         <source>Background Image: %1</source> | ||||||
|         <translation>Hintergrundbild: %1</translation> |         <translation>Hintergrundbild: %1</translation> | ||||||
|     </message> |     </message> | ||||||
|  | @ -314,70 +314,90 @@ Snapmatic Bilder und Spielständen</translation> | ||||||
|         <translation>&Optionen</translation> |         <translation>&Optionen</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="334"/> |         <location filename="../ImportDialog.ui" line="337"/> | ||||||
|         <source>Import picture</source> |         <source>Import picture</source> | ||||||
|         <translation>Bild importieren</translation> |         <translation>Bild importieren</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="337"/> |         <location filename="../ImportDialog.ui" line="340"/> | ||||||
|         <source>&OK</source> |         <source>&OK</source> | ||||||
|         <translation>&OK</translation> |         <translation>&OK</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="350"/> |         <location filename="../ImportDialog.ui" line="353"/> | ||||||
|         <source>Discard picture</source> |         <source>Discard picture</source> | ||||||
|         <translation>Bild verwerfen</translation> |         <translation>Bild verwerfen</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="353"/> |         <location filename="../ImportDialog.ui" line="356"/> | ||||||
|         <source>&Cancel</source> |         <source>&Cancel</source> | ||||||
|         <translation>Abbre&chen</translation> |         <translation>Abbre&chen</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="203"/> |         <location filename="../ImportDialog.ui" line="203"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="85"/> |         <location filename="../ImportDialog.cpp" line="86"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="527"/> |         <location filename="../ImportDialog.cpp" line="571"/> | ||||||
|         <source>Background Image:</source> |         <source>Background Image:</source> | ||||||
|         <translation>Hintergrundbild:</translation> |         <translation>Hintergrundbild:</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="110"/> |         <location filename="../ImportDialog.cpp" line="111"/> | ||||||
|         <source>&Import new Picture...</source> |         <source>&Import new Picture...</source> | ||||||
|         <translation>Neues Bild &importieren...</translation> |         <translation>Neues Bild &importieren...</translation> | ||||||
|     </message> |     </message> | ||||||
|     <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"/> |         <location filename="../ProfileInterface.cpp" line="668"/> | ||||||
|         <source>Custom Avatar</source> |         <source>Custom Avatar</source> | ||||||
|         <comment>Custom Avatar Description in SC, don't use Special Character!</comment> |         <comment>Custom Avatar Description in SC, don't use Special Character!</comment> | ||||||
|         <translation>Eigener Avatar</translation> |         <translation>Eigener Avatar</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="210"/> |         <location filename="../ImportDialog.cpp" line="212"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="687"/> |         <location filename="../ProfileInterface.cpp" line="687"/> | ||||||
|         <source>Custom Picture</source> |         <source>Custom Picture</source> | ||||||
|         <comment>Custom Picture Description in SC, don't use Special Character!</comment> |         <comment>Custom Picture Description in SC, don't use Special Character!</comment> | ||||||
|         <translation>Eigenes Bild</translation> |         <translation>Eigenes Bild</translation> | ||||||
|     </message> |     </message> | ||||||
|     <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? |         <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> | 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? |         <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> | Wenn du es als Avatar verwenden möchtest wird es abgetrennt!</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="394"/> |         <location filename="../ImportDialog.cpp" line="438"/> | ||||||
|         <source>Snapmatic Avatar Zone</source> |         <source>Snapmatic Avatar Zone</source> | ||||||
|         <translation>Snapmatic Avatar Zone</translation> |         <translation>Snapmatic Avatar Zone</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="443"/> |         <location filename="../ImportDialog.cpp" line="487"/> | ||||||
|         <source>Select Colour...</source> |         <source>Select Colour...</source> | ||||||
|         <translation>Farbe auswählen...</translation> |         <translation>Farbe auswählen...</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="512"/> |         <location filename="../ImportDialog.cpp" line="556"/> | ||||||
|         <source>File</source> |         <source>File</source> | ||||||
|         <comment>Background Image: File</comment> |         <comment>Background Image: File</comment> | ||||||
|         <translation>Datei</translation> |         <translation>Datei</translation> | ||||||
|  | @ -1135,8 +1155,8 @@ Drücke 1 für Standardmodus</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="109"/> |         <location filename="../ImageEditorDialog.cpp" line="109"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="272"/> |         <location filename="../ImportDialog.cpp" line="316"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="466"/> |         <location filename="../ImportDialog.cpp" line="510"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="482"/> |         <location filename="../ProfileInterface.cpp" line="482"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="548"/> |         <location filename="../ProfileInterface.cpp" line="548"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="857"/> |         <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="110"/> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="141"/> |         <location filename="../ImageEditorDialog.cpp" line="141"/> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="150"/> |         <location filename="../ImageEditorDialog.cpp" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="273"/> |         <location filename="../ImportDialog.cpp" line="317"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="304"/> |         <location filename="../ImportDialog.cpp" line="348"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="313"/> |         <location filename="../ImportDialog.cpp" line="357"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="467"/> |         <location filename="../ImportDialog.cpp" line="511"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="498"/> |         <location filename="../ImportDialog.cpp" line="542"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="507"/> |         <location filename="../ImportDialog.cpp" line="551"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="483"/> |         <location filename="../ProfileInterface.cpp" line="483"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="527"/> |         <location filename="../ProfileInterface.cpp" line="527"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="582"/> |         <location filename="../ProfileInterface.cpp" line="582"/> | ||||||
|  | @ -1189,16 +1209,16 @@ Drücke 1 für Standardmodus</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="120"/> |         <location filename="../ImageEditorDialog.cpp" line="120"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="283"/> |         <location filename="../ImportDialog.cpp" line="327"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="477"/> |         <location filename="../ImportDialog.cpp" line="521"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="502"/> |         <location filename="../ProfileInterface.cpp" line="502"/> | ||||||
|         <source>All image files (%1)</source> |         <source>All image files (%1)</source> | ||||||
|         <translation>Alle Bilddateien (%1)</translation> |         <translation>Alle Bilddateien (%1)</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="121"/> |         <location filename="../ImageEditorDialog.cpp" line="121"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="284"/> |         <location filename="../ImportDialog.cpp" line="328"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="478"/> |         <location filename="../ImportDialog.cpp" line="522"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="503"/> |         <location filename="../ProfileInterface.cpp" line="503"/> | ||||||
|         <location filename="../UserInterface.cpp" line="463"/> |         <location filename="../UserInterface.cpp" line="463"/> | ||||||
|         <source>All files (**)</source> |         <source>All files (**)</source> | ||||||
|  | @ -1233,16 +1253,16 @@ Drücke 1 für Standardmodus</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="141"/> |         <location filename="../ImageEditorDialog.cpp" line="141"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="304"/> |         <location filename="../ImportDialog.cpp" line="348"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="498"/> |         <location filename="../ImportDialog.cpp" line="542"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="725"/> |         <location filename="../ProfileInterface.cpp" line="725"/> | ||||||
|         <source>Can't import %1 because file can't be open</source> |         <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> |         <translation>Kann %1 nicht importieren weil die Datei nicht geöffnet werden kann</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="150"/> |         <location filename="../ImageEditorDialog.cpp" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="313"/> |         <location filename="../ImportDialog.cpp" line="357"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="507"/> |         <location filename="../ImportDialog.cpp" line="551"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="735"/> |         <location filename="../ProfileInterface.cpp" line="735"/> | ||||||
|         <source>Can't import %1 because file can't be parsed properly</source> |         <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> |         <translation>Kann %1 nicht importieren weil die Datei nicht richtig gelesen werden kann</translation> | ||||||
|  |  | ||||||
|  | @ -226,8 +226,8 @@ Pictures and Savegames</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="150"/> |         <location filename="../ImportDialog.ui" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="84"/> |         <location filename="../ImportDialog.cpp" line="85"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="447"/> |         <location filename="../ImportDialog.cpp" line="491"/> | ||||||
|         <source>Background Colour: <span style="color: %1">%1</span></source> |         <source>Background Colour: <span style="color: %1">%1</span></source> | ||||||
|         <translation>Background Color: <span style="color: %1">%1</span></translation> |         <translation>Background Color: <span style="color: %1">%1</span></translation> | ||||||
|     </message> |     </message> | ||||||
|  | @ -269,7 +269,7 @@ Pictures and Savegames</source> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="512"/> |         <location filename="../ImportDialog.cpp" line="556"/> | ||||||
|         <source>Background Image: %1</source> |         <source>Background Image: %1</source> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|     </message> |     </message> | ||||||
|  | @ -304,69 +304,89 @@ Pictures and Savegames</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="334"/> |         <location filename="../ImportDialog.ui" line="337"/> | ||||||
|         <source>Import picture</source> |         <source>Import picture</source> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="337"/> |         <location filename="../ImportDialog.ui" line="340"/> | ||||||
|         <source>&OK</source> |         <source>&OK</source> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="350"/> |         <location filename="../ImportDialog.ui" line="353"/> | ||||||
|         <source>Discard picture</source> |         <source>Discard picture</source> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="353"/> |         <location filename="../ImportDialog.ui" line="356"/> | ||||||
|         <source>&Cancel</source> |         <source>&Cancel</source> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="203"/> |         <location filename="../ImportDialog.ui" line="203"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="85"/> |         <location filename="../ImportDialog.cpp" line="86"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="527"/> |         <location filename="../ImportDialog.cpp" line="571"/> | ||||||
|         <source>Background Image:</source> |         <source>Background Image:</source> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="110"/> |         <location filename="../ImportDialog.cpp" line="111"/> | ||||||
|         <source>&Import new Picture...</source> |         <source>&Import new Picture...</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <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"/> |         <location filename="../ProfileInterface.cpp" line="668"/> | ||||||
|         <source>Custom Avatar</source> |         <source>Custom Avatar</source> | ||||||
|         <comment>Custom Avatar Description in SC, don't use Special Character!</comment> |         <comment>Custom Avatar Description in SC, don't use Special Character!</comment> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="210"/> |         <location filename="../ImportDialog.cpp" line="212"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="687"/> |         <location filename="../ProfileInterface.cpp" line="687"/> | ||||||
|         <source>Custom Picture</source> |         <source>Custom Picture</source> | ||||||
|         <comment>Custom Picture Description in SC, don't use Special Character!</comment> |         <comment>Custom Picture Description in SC, don't use Special Character!</comment> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|     </message> |     </message> | ||||||
|     <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> |         <source>Snapmatic Avatar Zone</source> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|     </message> |     </message> | ||||||
|     <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? |         <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> | When you want to use it as Avatar the image will be detached!</source> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="443"/> |         <location filename="../ImportDialog.cpp" line="487"/> | ||||||
|         <source>Select Colour...</source> |         <source>Select Colour...</source> | ||||||
|         <translation>Select Color...</translation> |         <translation>Select Color...</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="512"/> |         <location filename="../ImportDialog.cpp" line="556"/> | ||||||
|         <source>File</source> |         <source>File</source> | ||||||
|         <comment>Background Image: File</comment> |         <comment>Background Image: File</comment> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|  | @ -1128,8 +1148,8 @@ Press 1 for Default View</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="109"/> |         <location filename="../ImageEditorDialog.cpp" line="109"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="272"/> |         <location filename="../ImportDialog.cpp" line="316"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="466"/> |         <location filename="../ImportDialog.cpp" line="510"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="482"/> |         <location filename="../ProfileInterface.cpp" line="482"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="548"/> |         <location filename="../ProfileInterface.cpp" line="548"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="857"/> |         <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="110"/> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="141"/> |         <location filename="../ImageEditorDialog.cpp" line="141"/> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="150"/> |         <location filename="../ImageEditorDialog.cpp" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="273"/> |         <location filename="../ImportDialog.cpp" line="317"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="304"/> |         <location filename="../ImportDialog.cpp" line="348"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="313"/> |         <location filename="../ImportDialog.cpp" line="357"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="467"/> |         <location filename="../ImportDialog.cpp" line="511"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="498"/> |         <location filename="../ImportDialog.cpp" line="542"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="507"/> |         <location filename="../ImportDialog.cpp" line="551"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="483"/> |         <location filename="../ProfileInterface.cpp" line="483"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="527"/> |         <location filename="../ProfileInterface.cpp" line="527"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="582"/> |         <location filename="../ProfileInterface.cpp" line="582"/> | ||||||
|  | @ -1188,16 +1208,16 @@ Press 1 for Default View</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="120"/> |         <location filename="../ImageEditorDialog.cpp" line="120"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="283"/> |         <location filename="../ImportDialog.cpp" line="327"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="477"/> |         <location filename="../ImportDialog.cpp" line="521"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="502"/> |         <location filename="../ProfileInterface.cpp" line="502"/> | ||||||
|         <source>All image files (%1)</source> |         <source>All image files (%1)</source> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="121"/> |         <location filename="../ImageEditorDialog.cpp" line="121"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="284"/> |         <location filename="../ImportDialog.cpp" line="328"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="478"/> |         <location filename="../ImportDialog.cpp" line="522"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="503"/> |         <location filename="../ProfileInterface.cpp" line="503"/> | ||||||
|         <location filename="../UserInterface.cpp" line="463"/> |         <location filename="../UserInterface.cpp" line="463"/> | ||||||
|         <source>All files (**)</source> |         <source>All files (**)</source> | ||||||
|  | @ -1237,16 +1257,16 @@ Press 1 for Default View</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="141"/> |         <location filename="../ImageEditorDialog.cpp" line="141"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="304"/> |         <location filename="../ImportDialog.cpp" line="348"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="498"/> |         <location filename="../ImportDialog.cpp" line="542"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="725"/> |         <location filename="../ProfileInterface.cpp" line="725"/> | ||||||
|         <source>Can't import %1 because file can't be open</source> |         <source>Can't import %1 because file can't be open</source> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="150"/> |         <location filename="../ImageEditorDialog.cpp" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="313"/> |         <location filename="../ImportDialog.cpp" line="357"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="507"/> |         <location filename="../ImportDialog.cpp" line="551"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="735"/> |         <location filename="../ProfileInterface.cpp" line="735"/> | ||||||
|         <source>Can't import %1 because file can't be parsed properly</source> |         <source>Can't import %1 because file can't be parsed properly</source> | ||||||
|         <translation></translation> |         <translation></translation> | ||||||
|  |  | ||||||
|  | @ -262,8 +262,8 @@ et les fichiers de sauvegarde de Grand Theft Auto V</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="150"/> |         <location filename="../ImportDialog.ui" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="84"/> |         <location filename="../ImportDialog.cpp" line="85"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="447"/> |         <location filename="../ImportDialog.cpp" line="491"/> | ||||||
|         <source>Background Colour: <span style="color: %1">%1</span></source> |         <source>Background Colour: <span style="color: %1">%1</span></source> | ||||||
|         <translation>Couleur de fond : <span style="color: %1">%1</span></translation> |         <translation>Couleur de fond : <span style="color: %1">%1</span></translation> | ||||||
|     </message> |     </message> | ||||||
|  | @ -289,7 +289,7 @@ et les fichiers de sauvegarde de Grand Theft Auto V</translation> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="512"/> |         <location filename="../ImportDialog.cpp" line="556"/> | ||||||
|         <source>Background Image: %1</source> |         <source>Background Image: %1</source> | ||||||
|         <translation>Image de fond : %1</translation> |         <translation>Image de fond : %1</translation> | ||||||
|     </message> |     </message> | ||||||
|  | @ -314,70 +314,90 @@ et les fichiers de sauvegarde de Grand Theft Auto V</translation> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="334"/> |         <location filename="../ImportDialog.ui" line="337"/> | ||||||
|         <source>Import picture</source> |         <source>Import picture</source> | ||||||
|         <translation>Importer l'image</translation> |         <translation>Importer l'image</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="337"/> |         <location filename="../ImportDialog.ui" line="340"/> | ||||||
|         <source>&OK</source> |         <source>&OK</source> | ||||||
|         <translation>&OK</translation> |         <translation>&OK</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="350"/> |         <location filename="../ImportDialog.ui" line="353"/> | ||||||
|         <source>Discard picture</source> |         <source>Discard picture</source> | ||||||
|         <translation>Supprimer l'image</translation> |         <translation>Supprimer l'image</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="353"/> |         <location filename="../ImportDialog.ui" line="356"/> | ||||||
|         <source>&Cancel</source> |         <source>&Cancel</source> | ||||||
|         <translation>A&nnuler</translation> |         <translation>A&nnuler</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="203"/> |         <location filename="../ImportDialog.ui" line="203"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="85"/> |         <location filename="../ImportDialog.cpp" line="86"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="527"/> |         <location filename="../ImportDialog.cpp" line="571"/> | ||||||
|         <source>Background Image:</source> |         <source>Background Image:</source> | ||||||
|         <translation>Image de fond :</translation> |         <translation>Image de fond :</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="110"/> |         <location filename="../ImportDialog.cpp" line="111"/> | ||||||
|         <source>&Import new Picture...</source> |         <source>&Import new Picture...</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <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"/> |         <location filename="../ProfileInterface.cpp" line="668"/> | ||||||
|         <source>Custom Avatar</source> |         <source>Custom Avatar</source> | ||||||
|         <comment>Custom Avatar Description in SC, don't use Special Character!</comment> |         <comment>Custom Avatar Description in SC, don't use Special Character!</comment> | ||||||
|         <translation>Avatar personnalisé</translation> |         <translation>Avatar personnalisé</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="210"/> |         <location filename="../ImportDialog.cpp" line="212"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="687"/> |         <location filename="../ProfileInterface.cpp" line="687"/> | ||||||
|         <source>Custom Picture</source> |         <source>Custom Picture</source> | ||||||
|         <comment>Custom Picture Description in SC, don't use Special Character!</comment> |         <comment>Custom Picture Description in SC, don't use Special Character!</comment> | ||||||
|         <translation>Image personnalisé</translation> |         <translation>Image personnalisé</translation> | ||||||
|     </message> |     </message> | ||||||
|     <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? |         <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> | 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 ? |         <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> | Si vous l'utilisez comme Avatar, l'image sera détachée !</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="394"/> |         <location filename="../ImportDialog.cpp" line="438"/> | ||||||
|         <source>Snapmatic Avatar Zone</source> |         <source>Snapmatic Avatar Zone</source> | ||||||
|         <translation>Zone d'Avatar Snapmatic</translation> |         <translation>Zone d'Avatar Snapmatic</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="443"/> |         <location filename="../ImportDialog.cpp" line="487"/> | ||||||
|         <source>Select Colour...</source> |         <source>Select Colour...</source> | ||||||
|         <translation>Choisir une couleur...</translation> |         <translation>Choisir une couleur...</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="512"/> |         <location filename="../ImportDialog.cpp" line="556"/> | ||||||
|         <source>File</source> |         <source>File</source> | ||||||
|         <comment>Background Image: File</comment> |         <comment>Background Image: File</comment> | ||||||
|         <translation>Fichier</translation> |         <translation>Fichier</translation> | ||||||
|  | @ -1146,8 +1166,8 @@ Appuyer sur 1 pour le mode par défaut</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="109"/> |         <location filename="../ImageEditorDialog.cpp" line="109"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="272"/> |         <location filename="../ImportDialog.cpp" line="316"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="466"/> |         <location filename="../ImportDialog.cpp" line="510"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="482"/> |         <location filename="../ProfileInterface.cpp" line="482"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="548"/> |         <location filename="../ProfileInterface.cpp" line="548"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="857"/> |         <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="110"/> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="141"/> |         <location filename="../ImageEditorDialog.cpp" line="141"/> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="150"/> |         <location filename="../ImageEditorDialog.cpp" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="273"/> |         <location filename="../ImportDialog.cpp" line="317"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="304"/> |         <location filename="../ImportDialog.cpp" line="348"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="313"/> |         <location filename="../ImportDialog.cpp" line="357"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="467"/> |         <location filename="../ImportDialog.cpp" line="511"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="498"/> |         <location filename="../ImportDialog.cpp" line="542"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="507"/> |         <location filename="../ImportDialog.cpp" line="551"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="483"/> |         <location filename="../ProfileInterface.cpp" line="483"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="527"/> |         <location filename="../ProfileInterface.cpp" line="527"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="582"/> |         <location filename="../ProfileInterface.cpp" line="582"/> | ||||||
|  | @ -1195,16 +1215,16 @@ Appuyer sur 1 pour le mode par défaut</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="120"/> |         <location filename="../ImageEditorDialog.cpp" line="120"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="283"/> |         <location filename="../ImportDialog.cpp" line="327"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="477"/> |         <location filename="../ImportDialog.cpp" line="521"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="502"/> |         <location filename="../ProfileInterface.cpp" line="502"/> | ||||||
|         <source>All image files (%1)</source> |         <source>All image files (%1)</source> | ||||||
|         <translation>Toutes les images (%1)</translation> |         <translation>Toutes les images (%1)</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="121"/> |         <location filename="../ImageEditorDialog.cpp" line="121"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="284"/> |         <location filename="../ImportDialog.cpp" line="328"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="478"/> |         <location filename="../ImportDialog.cpp" line="522"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="503"/> |         <location filename="../ProfileInterface.cpp" line="503"/> | ||||||
|         <location filename="../UserInterface.cpp" line="463"/> |         <location filename="../UserInterface.cpp" line="463"/> | ||||||
|         <source>All files (**)</source> |         <source>All files (**)</source> | ||||||
|  | @ -1251,16 +1271,16 @@ Appuyer sur 1 pour le mode par défaut</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="141"/> |         <location filename="../ImageEditorDialog.cpp" line="141"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="304"/> |         <location filename="../ImportDialog.cpp" line="348"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="498"/> |         <location filename="../ImportDialog.cpp" line="542"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="725"/> |         <location filename="../ProfileInterface.cpp" line="725"/> | ||||||
|         <source>Can't import %1 because file can't be open</source> |         <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> |         <translation>Impossible d'importer %1, le fichier ne peut pas être ouvert</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="150"/> |         <location filename="../ImageEditorDialog.cpp" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="313"/> |         <location filename="../ImportDialog.cpp" line="357"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="507"/> |         <location filename="../ImportDialog.cpp" line="551"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="735"/> |         <location filename="../ProfileInterface.cpp" line="735"/> | ||||||
|         <source>Can't import %1 because file can't be parsed properly</source> |         <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> |         <translation>Impossible d'importer %1, le fichier ne peut pas être parsé correctement</translation> | ||||||
|  |  | ||||||
|  | @ -264,8 +264,8 @@ Pictures and Savegames</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="150"/> |         <location filename="../ImportDialog.ui" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="84"/> |         <location filename="../ImportDialog.cpp" line="85"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="447"/> |         <location filename="../ImportDialog.cpp" line="491"/> | ||||||
|         <source>Background Colour: <span style="color: %1">%1</span></source> |         <source>Background Colour: <span style="color: %1">%1</span></source> | ||||||
|         <translation>Цвет фона: <span style="color: %1">%1</span></translation> |         <translation>Цвет фона: <span style="color: %1">%1</span></translation> | ||||||
|     </message> |     </message> | ||||||
|  | @ -291,7 +291,7 @@ Pictures and Savegames</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="512"/> |         <location filename="../ImportDialog.cpp" line="556"/> | ||||||
|         <source>Background Image: %1</source> |         <source>Background Image: %1</source> | ||||||
|         <translation>Фоновая картинка: %1</translation> |         <translation>Фоновая картинка: %1</translation> | ||||||
|     </message> |     </message> | ||||||
|  | @ -317,70 +317,90 @@ Pictures and Savegames</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="334"/> |         <location filename="../ImportDialog.ui" line="337"/> | ||||||
|         <source>Import picture</source> |         <source>Import picture</source> | ||||||
|         <translation>Импортировать картинку</translation> |         <translation>Импортировать картинку</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="337"/> |         <location filename="../ImportDialog.ui" line="340"/> | ||||||
|         <source>&OK</source> |         <source>&OK</source> | ||||||
|         <translation>&ОК</translation> |         <translation>&ОК</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="350"/> |         <location filename="../ImportDialog.ui" line="353"/> | ||||||
|         <source>Discard picture</source> |         <source>Discard picture</source> | ||||||
|         <translation>Отклонить картинку</translation> |         <translation>Отклонить картинку</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="353"/> |         <location filename="../ImportDialog.ui" line="356"/> | ||||||
|         <source>&Cancel</source> |         <source>&Cancel</source> | ||||||
|         <translatorcomment>Я не уверен насчет горячих клавиш...</translatorcomment> |         <translatorcomment>Я не уверен насчет горячих клавиш...</translatorcomment> | ||||||
|         <translation>От&мена</translation> |         <translation>От&мена</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="203"/> |         <location filename="../ImportDialog.ui" line="203"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="85"/> |         <location filename="../ImportDialog.cpp" line="86"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="527"/> |         <location filename="../ImportDialog.cpp" line="571"/> | ||||||
|         <source>Background Image:</source> |         <source>Background Image:</source> | ||||||
|         <translation>Фоновая картинка:</translation> |         <translation>Фоновая картинка:</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="110"/> |         <location filename="../ImportDialog.cpp" line="111"/> | ||||||
|         <source>&Import new Picture...</source> |         <source>&Import new Picture...</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <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"/> |         <location filename="../ProfileInterface.cpp" line="668"/> | ||||||
|         <source>Custom Avatar</source> |         <source>Custom Avatar</source> | ||||||
|         <comment>Custom Avatar Description in SC, don't use Special Character!</comment> |         <comment>Custom Avatar Description in SC, don't use Special Character!</comment> | ||||||
|         <translation>Свой Аватар</translation> |         <translation>Свой Аватар</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="210"/> |         <location filename="../ImportDialog.cpp" line="212"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="687"/> |         <location filename="../ProfileInterface.cpp" line="687"/> | ||||||
|         <source>Custom Picture</source> |         <source>Custom Picture</source> | ||||||
|         <comment>Custom Picture Description in SC, don't use Special Character!</comment> |         <comment>Custom Picture Description in SC, don't use Special Character!</comment> | ||||||
|         <translation>Своя Картинка</translation> |         <translation>Своя Картинка</translation> | ||||||
|     </message> |     </message> | ||||||
|     <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? |         <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> | When you want to use it as Avatar the image will be detached!</source> | ||||||
|         <translation>Ты точно хочешь использовать квадратное изображение вне зоны аватарки? Если это аватар, то изображение будет обрезано!</translation> |         <translation>Ты точно хочешь использовать квадратное изображение вне зоны аватарки? Если это аватар, то изображение будет обрезано!</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="394"/> |         <location filename="../ImportDialog.cpp" line="438"/> | ||||||
|         <source>Snapmatic Avatar Zone</source> |         <source>Snapmatic Avatar Zone</source> | ||||||
|         <translation>Зона Snapmatic Аватарки</translation> |         <translation>Зона Snapmatic Аватарки</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="443"/> |         <location filename="../ImportDialog.cpp" line="487"/> | ||||||
|         <source>Select Colour...</source> |         <source>Select Colour...</source> | ||||||
|         <translation>Выбрать цвет...</translation> |         <translation>Выбрать цвет...</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="512"/> |         <location filename="../ImportDialog.cpp" line="556"/> | ||||||
|         <source>File</source> |         <source>File</source> | ||||||
|         <comment>Background Image: File</comment> |         <comment>Background Image: File</comment> | ||||||
|         <translation>Файл</translation> |         <translation>Файл</translation> | ||||||
|  | @ -1140,8 +1160,8 @@ Press 1 for Default View</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="109"/> |         <location filename="../ImageEditorDialog.cpp" line="109"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="272"/> |         <location filename="../ImportDialog.cpp" line="316"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="466"/> |         <location filename="../ImportDialog.cpp" line="510"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="482"/> |         <location filename="../ProfileInterface.cpp" line="482"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="548"/> |         <location filename="../ProfileInterface.cpp" line="548"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="857"/> |         <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="110"/> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="141"/> |         <location filename="../ImageEditorDialog.cpp" line="141"/> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="150"/> |         <location filename="../ImageEditorDialog.cpp" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="273"/> |         <location filename="../ImportDialog.cpp" line="317"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="304"/> |         <location filename="../ImportDialog.cpp" line="348"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="313"/> |         <location filename="../ImportDialog.cpp" line="357"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="467"/> |         <location filename="../ImportDialog.cpp" line="511"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="498"/> |         <location filename="../ImportDialog.cpp" line="542"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="507"/> |         <location filename="../ImportDialog.cpp" line="551"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="483"/> |         <location filename="../ProfileInterface.cpp" line="483"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="527"/> |         <location filename="../ProfileInterface.cpp" line="527"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="582"/> |         <location filename="../ProfileInterface.cpp" line="582"/> | ||||||
|  | @ -1189,8 +1209,8 @@ Press 1 for Default View</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="121"/> |         <location filename="../ImageEditorDialog.cpp" line="121"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="284"/> |         <location filename="../ImportDialog.cpp" line="328"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="478"/> |         <location filename="../ImportDialog.cpp" line="522"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="503"/> |         <location filename="../ProfileInterface.cpp" line="503"/> | ||||||
|         <location filename="../UserInterface.cpp" line="463"/> |         <location filename="../UserInterface.cpp" line="463"/> | ||||||
|         <source>All files (**)</source> |         <source>All files (**)</source> | ||||||
|  | @ -1242,24 +1262,24 @@ Press 1 for Default View</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="120"/> |         <location filename="../ImageEditorDialog.cpp" line="120"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="283"/> |         <location filename="../ImportDialog.cpp" line="327"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="477"/> |         <location filename="../ImportDialog.cpp" line="521"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="502"/> |         <location filename="../ProfileInterface.cpp" line="502"/> | ||||||
|         <source>All image files (%1)</source> |         <source>All image files (%1)</source> | ||||||
|         <translation>Все файлы изображений (%1)</translation> |         <translation>Все файлы изображений (%1)</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="141"/> |         <location filename="../ImageEditorDialog.cpp" line="141"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="304"/> |         <location filename="../ImportDialog.cpp" line="348"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="498"/> |         <location filename="../ImportDialog.cpp" line="542"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="725"/> |         <location filename="../ProfileInterface.cpp" line="725"/> | ||||||
|         <source>Can't import %1 because file can't be open</source> |         <source>Can't import %1 because file can't be open</source> | ||||||
|         <translation>Не удалось открыть %1, файл не может быть открыт</translation> |         <translation>Не удалось открыть %1, файл не может быть открыт</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="150"/> |         <location filename="../ImageEditorDialog.cpp" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="313"/> |         <location filename="../ImportDialog.cpp" line="357"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="507"/> |         <location filename="../ImportDialog.cpp" line="551"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="735"/> |         <location filename="../ProfileInterface.cpp" line="735"/> | ||||||
|         <source>Can't import %1 because file can't be parsed properly</source> |         <source>Can't import %1 because file can't be parsed properly</source> | ||||||
|         <translation>Не получилось импортировать %1, файл не может быть правильно обработан</translation> |         <translation>Не получилось импортировать %1, файл не может быть правильно обработан</translation> | ||||||
|  |  | ||||||
|  | @ -262,8 +262,8 @@ Pictures and Savegames</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="150"/> |         <location filename="../ImportDialog.ui" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="84"/> |         <location filename="../ImportDialog.cpp" line="85"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="447"/> |         <location filename="../ImportDialog.cpp" line="491"/> | ||||||
|         <source>Background Colour: <span style="color: %1">%1</span></source> |         <source>Background Colour: <span style="color: %1">%1</span></source> | ||||||
|         <translation>Фоновий колір: <span style="color: %1">%1</span></translation> |         <translation>Фоновий колір: <span style="color: %1">%1</span></translation> | ||||||
|     </message> |     </message> | ||||||
|  | @ -280,8 +280,8 @@ Pictures and Savegames</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="203"/> |         <location filename="../ImportDialog.ui" line="203"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="85"/> |         <location filename="../ImportDialog.cpp" line="86"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="527"/> |         <location filename="../ImportDialog.cpp" line="571"/> | ||||||
|         <source>Background Image:</source> |         <source>Background Image:</source> | ||||||
|         <translation>Фонове зображення:</translation> |         <translation>Фонове зображення:</translation> | ||||||
|     </message> |     </message> | ||||||
|  | @ -316,68 +316,88 @@ Pictures and Savegames</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="334"/> |         <location filename="../ImportDialog.ui" line="337"/> | ||||||
|         <source>Import picture</source> |         <source>Import picture</source> | ||||||
|         <translation>Імпортувати зображення</translation> |         <translation>Імпортувати зображення</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="337"/> |         <location filename="../ImportDialog.ui" line="340"/> | ||||||
|         <source>&OK</source> |         <source>&OK</source> | ||||||
|         <translation>&OK</translation> |         <translation>&OK</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="350"/> |         <location filename="../ImportDialog.ui" line="353"/> | ||||||
|         <source>Discard picture</source> |         <source>Discard picture</source> | ||||||
|         <translation>Відхилити зображення</translation> |         <translation>Відхилити зображення</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="353"/> |         <location filename="../ImportDialog.ui" line="356"/> | ||||||
|         <source>&Cancel</source> |         <source>&Cancel</source> | ||||||
|         <translation>&Скасувати</translation> |         <translation>&Скасувати</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="110"/> |         <location filename="../ImportDialog.cpp" line="111"/> | ||||||
|         <source>&Import new Picture...</source> |         <source>&Import new Picture...</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <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"/> |         <location filename="../ProfileInterface.cpp" line="668"/> | ||||||
|         <source>Custom Avatar</source> |         <source>Custom Avatar</source> | ||||||
|         <comment>Custom Avatar Description in SC, don't use Special Character!</comment> |         <comment>Custom Avatar Description in SC, don't use Special Character!</comment> | ||||||
|         <translation>Користувацький Аватар</translation> |         <translation>Користувацький Аватар</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="210"/> |         <location filename="../ImportDialog.cpp" line="212"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="687"/> |         <location filename="../ProfileInterface.cpp" line="687"/> | ||||||
|         <source>Custom Picture</source> |         <source>Custom Picture</source> | ||||||
|         <comment>Custom Picture Description in SC, don't use Special Character!</comment> |         <comment>Custom Picture Description in SC, don't use Special Character!</comment> | ||||||
|         <translation>Користувацьке Зображення</translation> |         <translation>Користувацьке Зображення</translation> | ||||||
|     </message> |     </message> | ||||||
|     <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> |         <source>Snapmatic Avatar Zone</source> | ||||||
|         <translation>Зона Snapmatic Аватару</translation> |         <translation>Зона Snapmatic Аватару</translation> | ||||||
|     </message> |     </message> | ||||||
|     <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? |         <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> | When you want to use it as Avatar the image will be detached!</source> | ||||||
|         <translation>Ви впевнені, що будете використовувати квадратне зображення поза зоною аватара? |         <translation>Ви впевнені, що будете використовувати квадратне зображення поза зоною аватара? | ||||||
| Якщо ви хочете використовувати його як Аватар, зображення буде відокремлено!</translation> | Якщо ви хочете використовувати його як Аватар, зображення буде відокремлено!</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="443"/> |         <location filename="../ImportDialog.cpp" line="487"/> | ||||||
|         <source>Select Colour...</source> |         <source>Select Colour...</source> | ||||||
|         <translation>Вибір кольору...</translation> |         <translation>Вибір кольору...</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="512"/> |         <location filename="../ImportDialog.cpp" line="556"/> | ||||||
|         <source>Background Image: %1</source> |         <source>Background Image: %1</source> | ||||||
|         <translation>Фонове зображення: %1</translation> |         <translation>Фонове зображення: %1</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="512"/> |         <location filename="../ImportDialog.cpp" line="556"/> | ||||||
|         <source>File</source> |         <source>File</source> | ||||||
|         <comment>Background Image: File</comment> |         <comment>Background Image: File</comment> | ||||||
|         <translation>Файл</translation> |         <translation>Файл</translation> | ||||||
|  | @ -1126,8 +1146,8 @@ Press 1 for Default View</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="109"/> |         <location filename="../ImageEditorDialog.cpp" line="109"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="272"/> |         <location filename="../ImportDialog.cpp" line="316"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="466"/> |         <location filename="../ImportDialog.cpp" line="510"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="482"/> |         <location filename="../ProfileInterface.cpp" line="482"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="548"/> |         <location filename="../ProfileInterface.cpp" line="548"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="857"/> |         <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="110"/> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="141"/> |         <location filename="../ImageEditorDialog.cpp" line="141"/> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="150"/> |         <location filename="../ImageEditorDialog.cpp" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="273"/> |         <location filename="../ImportDialog.cpp" line="317"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="304"/> |         <location filename="../ImportDialog.cpp" line="348"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="313"/> |         <location filename="../ImportDialog.cpp" line="357"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="467"/> |         <location filename="../ImportDialog.cpp" line="511"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="498"/> |         <location filename="../ImportDialog.cpp" line="542"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="507"/> |         <location filename="../ImportDialog.cpp" line="551"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="483"/> |         <location filename="../ProfileInterface.cpp" line="483"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="527"/> |         <location filename="../ProfileInterface.cpp" line="527"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="582"/> |         <location filename="../ProfileInterface.cpp" line="582"/> | ||||||
|  | @ -1163,16 +1183,16 @@ Press 1 for Default View</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="120"/> |         <location filename="../ImageEditorDialog.cpp" line="120"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="283"/> |         <location filename="../ImportDialog.cpp" line="327"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="477"/> |         <location filename="../ImportDialog.cpp" line="521"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="502"/> |         <location filename="../ProfileInterface.cpp" line="502"/> | ||||||
|         <source>All image files (%1)</source> |         <source>All image files (%1)</source> | ||||||
|         <translation>Файли зображень (%1)</translation> |         <translation>Файли зображень (%1)</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="121"/> |         <location filename="../ImageEditorDialog.cpp" line="121"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="284"/> |         <location filename="../ImportDialog.cpp" line="328"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="478"/> |         <location filename="../ImportDialog.cpp" line="522"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="503"/> |         <location filename="../ProfileInterface.cpp" line="503"/> | ||||||
|         <location filename="../UserInterface.cpp" line="463"/> |         <location filename="../UserInterface.cpp" line="463"/> | ||||||
|         <source>All files (**)</source> |         <source>All files (**)</source> | ||||||
|  | @ -1180,16 +1200,16 @@ Press 1 for Default View</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="141"/> |         <location filename="../ImageEditorDialog.cpp" line="141"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="304"/> |         <location filename="../ImportDialog.cpp" line="348"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="498"/> |         <location filename="../ImportDialog.cpp" line="542"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="725"/> |         <location filename="../ProfileInterface.cpp" line="725"/> | ||||||
|         <source>Can't import %1 because file can't be open</source> |         <source>Can't import %1 because file can't be open</source> | ||||||
|         <translation>Неможливо імпортувати %1, оскільки файл не може бути відкритий</translation> |         <translation>Неможливо імпортувати %1, оскільки файл не може бути відкритий</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="150"/> |         <location filename="../ImageEditorDialog.cpp" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="313"/> |         <location filename="../ImportDialog.cpp" line="357"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="507"/> |         <location filename="../ImportDialog.cpp" line="551"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="735"/> |         <location filename="../ProfileInterface.cpp" line="735"/> | ||||||
|         <source>Can't import %1 because file can't be parsed properly</source> |         <source>Can't import %1 because file can't be parsed properly</source> | ||||||
|         <translation>Неможливо імпортувати %1, оскільки файл неможливо розібрати правильно</translation> |         <translation>Неможливо імпортувати %1, оскільки файл неможливо розібрати правильно</translation> | ||||||
|  |  | ||||||
|  | @ -261,8 +261,8 @@ Pictures and Savegames</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="150"/> |         <location filename="../ImportDialog.ui" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="84"/> |         <location filename="../ImportDialog.cpp" line="85"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="447"/> |         <location filename="../ImportDialog.cpp" line="491"/> | ||||||
|         <source>Background Colour: <span style="color: %1">%1</span></source> |         <source>Background Colour: <span style="color: %1">%1</span></source> | ||||||
|         <translation>背景顏色: <span style="color: %1">%1</span></translation> |         <translation>背景顏色: <span style="color: %1">%1</span></translation> | ||||||
|     </message> |     </message> | ||||||
|  | @ -279,8 +279,8 @@ Pictures and Savegames</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="203"/> |         <location filename="../ImportDialog.ui" line="203"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="85"/> |         <location filename="../ImportDialog.cpp" line="86"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="527"/> |         <location filename="../ImportDialog.cpp" line="571"/> | ||||||
|         <source>Background Image:</source> |         <source>Background Image:</source> | ||||||
|         <translation>背景圖片:</translation> |         <translation>背景圖片:</translation> | ||||||
|     </message> |     </message> | ||||||
|  | @ -315,67 +315,87 @@ Pictures and Savegames</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="334"/> |         <location filename="../ImportDialog.ui" line="337"/> | ||||||
|         <source>Import picture</source> |         <source>Import picture</source> | ||||||
|         <translation>匯入圖片</translation> |         <translation>匯入圖片</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="337"/> |         <location filename="../ImportDialog.ui" line="340"/> | ||||||
|         <source>&OK</source> |         <source>&OK</source> | ||||||
|         <translation>確定(&O)</translation> |         <translation>確定(&O)</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="350"/> |         <location filename="../ImportDialog.ui" line="353"/> | ||||||
|         <source>Discard picture</source> |         <source>Discard picture</source> | ||||||
|         <translation>捨棄圖片</translation> |         <translation>捨棄圖片</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.ui" line="353"/> |         <location filename="../ImportDialog.ui" line="356"/> | ||||||
|         <source>&Cancel</source> |         <source>&Cancel</source> | ||||||
|         <translation>取消(&C)</translation> |         <translation>取消(&C)</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="110"/> |         <location filename="../ImportDialog.cpp" line="111"/> | ||||||
|         <source>&Import new Picture...</source> |         <source>&Import new Picture...</source> | ||||||
|         <translation type="unfinished"></translation> |         <translation type="unfinished"></translation> | ||||||
|     </message> |     </message> | ||||||
|     <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"/> |         <location filename="../ProfileInterface.cpp" line="668"/> | ||||||
|         <source>Custom Avatar</source> |         <source>Custom Avatar</source> | ||||||
|         <comment>Custom Avatar Description in SC, don't use Special Character!</comment> |         <comment>Custom Avatar Description in SC, don't use Special Character!</comment> | ||||||
|         <translation>自訂大頭貼</translation> |         <translation>自訂大頭貼</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="210"/> |         <location filename="../ImportDialog.cpp" line="212"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="687"/> |         <location filename="../ProfileInterface.cpp" line="687"/> | ||||||
|         <source>Custom Picture</source> |         <source>Custom Picture</source> | ||||||
|         <comment>Custom Picture Description in SC, don't use Special Character!</comment> |         <comment>Custom Picture Description in SC, don't use Special Character!</comment> | ||||||
|         <translation>自訂圖片</translation> |         <translation>自訂圖片</translation> | ||||||
|     </message> |     </message> | ||||||
|     <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> |         <source>Snapmatic Avatar Zone</source> | ||||||
|         <translation>Snapmatic 大頭貼區域</translation> |         <translation>Snapmatic 大頭貼區域</translation> | ||||||
|     </message> |     </message> | ||||||
|     <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? |         <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> | When you want to use it as Avatar the image will be detached!</source> | ||||||
|         <translation>你確定要在大頭貼區域以外的地方使用方形圖片嗎? 作為大頭貼的圖片將被分離!</translation> |         <translation>你確定要在大頭貼區域以外的地方使用方形圖片嗎? 作為大頭貼的圖片將被分離!</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="443"/> |         <location filename="../ImportDialog.cpp" line="487"/> | ||||||
|         <source>Select Colour...</source> |         <source>Select Colour...</source> | ||||||
|         <translation>選擇顏色...</translation> |         <translation>選擇顏色...</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="512"/> |         <location filename="../ImportDialog.cpp" line="556"/> | ||||||
|         <source>Background Image: %1</source> |         <source>Background Image: %1</source> | ||||||
|         <translation>背景圖片: %1</translation> |         <translation>背景圖片: %1</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImportDialog.cpp" line="512"/> |         <location filename="../ImportDialog.cpp" line="556"/> | ||||||
|         <source>File</source> |         <source>File</source> | ||||||
|         <comment>Background Image: File</comment> |         <comment>Background Image: File</comment> | ||||||
|         <translation>文件</translation> |         <translation>文件</translation> | ||||||
|  | @ -1124,8 +1144,8 @@ Press 1 for Default View</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="109"/> |         <location filename="../ImageEditorDialog.cpp" line="109"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="272"/> |         <location filename="../ImportDialog.cpp" line="316"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="466"/> |         <location filename="../ImportDialog.cpp" line="510"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="482"/> |         <location filename="../ProfileInterface.cpp" line="482"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="548"/> |         <location filename="../ProfileInterface.cpp" line="548"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="857"/> |         <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="110"/> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="141"/> |         <location filename="../ImageEditorDialog.cpp" line="141"/> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="150"/> |         <location filename="../ImageEditorDialog.cpp" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="273"/> |         <location filename="../ImportDialog.cpp" line="317"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="304"/> |         <location filename="../ImportDialog.cpp" line="348"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="313"/> |         <location filename="../ImportDialog.cpp" line="357"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="467"/> |         <location filename="../ImportDialog.cpp" line="511"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="498"/> |         <location filename="../ImportDialog.cpp" line="542"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="507"/> |         <location filename="../ImportDialog.cpp" line="551"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="483"/> |         <location filename="../ProfileInterface.cpp" line="483"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="527"/> |         <location filename="../ProfileInterface.cpp" line="527"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="582"/> |         <location filename="../ProfileInterface.cpp" line="582"/> | ||||||
|  | @ -1161,16 +1181,16 @@ Press 1 for Default View</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="120"/> |         <location filename="../ImageEditorDialog.cpp" line="120"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="283"/> |         <location filename="../ImportDialog.cpp" line="327"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="477"/> |         <location filename="../ImportDialog.cpp" line="521"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="502"/> |         <location filename="../ProfileInterface.cpp" line="502"/> | ||||||
|         <source>All image files (%1)</source> |         <source>All image files (%1)</source> | ||||||
|         <translation>所有圖片 (%1)</translation> |         <translation>所有圖片 (%1)</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="121"/> |         <location filename="../ImageEditorDialog.cpp" line="121"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="284"/> |         <location filename="../ImportDialog.cpp" line="328"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="478"/> |         <location filename="../ImportDialog.cpp" line="522"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="503"/> |         <location filename="../ProfileInterface.cpp" line="503"/> | ||||||
|         <location filename="../UserInterface.cpp" line="463"/> |         <location filename="../UserInterface.cpp" line="463"/> | ||||||
|         <source>All files (**)</source> |         <source>All files (**)</source> | ||||||
|  | @ -1178,16 +1198,16 @@ Press 1 for Default View</source> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="141"/> |         <location filename="../ImageEditorDialog.cpp" line="141"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="304"/> |         <location filename="../ImportDialog.cpp" line="348"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="498"/> |         <location filename="../ImportDialog.cpp" line="542"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="725"/> |         <location filename="../ProfileInterface.cpp" line="725"/> | ||||||
|         <source>Can't import %1 because file can't be open</source> |         <source>Can't import %1 because file can't be open</source> | ||||||
|         <translation>無法匯入 %1,因為檔案無法開啟</translation> |         <translation>無法匯入 %1,因為檔案無法開啟</translation> | ||||||
|     </message> |     </message> | ||||||
|     <message> |     <message> | ||||||
|         <location filename="../ImageEditorDialog.cpp" line="150"/> |         <location filename="../ImageEditorDialog.cpp" line="150"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="313"/> |         <location filename="../ImportDialog.cpp" line="357"/> | ||||||
|         <location filename="../ImportDialog.cpp" line="507"/> |         <location filename="../ImportDialog.cpp" line="551"/> | ||||||
|         <location filename="../ProfileInterface.cpp" line="735"/> |         <location filename="../ProfileInterface.cpp" line="735"/> | ||||||
|         <source>Can't import %1 because file can't be parsed properly</source> |         <source>Can't import %1 because file can't be parsed properly</source> | ||||||
|         <translation>無法匯入 %1,因為檔案無法正確解析</translation> |         <translation>無法匯入 %1,因為檔案無法正確解析</translation> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue