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