From 2b2cfc210fb711cb2e765f0138e6a71317257e09 Mon Sep 17 00:00:00 2001 From: Syping Date: Mon, 16 Nov 2020 15:29:31 +0100 Subject: [PATCH] add unlimited buffer and import as-is --- ImportDialog.cpp | 329 ++++++++++++++++++++++++++---------------- ImportDialog.h | 7 +- ImportDialog.ui | 59 +++++++- ProfileInterface.cpp | 6 +- res/gta5sync.ts | 205 +++++++++++++++----------- res/gta5sync_de.qm | Bin 48399 -> 49583 bytes res/gta5sync_de.ts | 205 +++++++++++++++----------- res/gta5sync_en_US.ts | 205 +++++++++++++++----------- res/gta5sync_fr.ts | 205 +++++++++++++++----------- res/gta5sync_ko.ts | 205 +++++++++++++++----------- res/gta5sync_ru.ts | 205 +++++++++++++++----------- res/gta5sync_uk.ts | 205 +++++++++++++++----------- res/gta5sync_zh_TW.ts | 205 +++++++++++++++----------- 13 files changed, 1242 insertions(+), 799 deletions(-) diff --git a/ImportDialog.cpp b/ImportDialog.cpp index c2b9d8b..e14bb00 100644 --- a/ImportDialog.cpp +++ b/ImportDialog.cpp @@ -16,10 +16,11 @@ * along with this program. If not, see . *****************************************************************************/ -#include "ImportDialog.h" #include "ui_ImportDialog.h" +#include "SnapmaticPicture.h" #include "SidebarGenerator.h" #include "StandardPaths.h" +#include "ImportDialog.h" #include "imagecropper.h" #include "AppEnv.h" #include "config.h" @@ -39,8 +40,6 @@ #include // IMAGES VALUES -#define snapmaticResolutionW 960 -#define snapmaticResolutionH 536 #define snapmaticAvatarResolution 470 #define snapmaticAvatarPlacementW 145 #define snapmaticAvatarPlacementH 66 @@ -88,6 +87,14 @@ ImportDialog::ImportDialog(QString profileName, QWidget *parent) : ui->labBackgroundImage->setText(tr("Background Image:")); ui->cmdBackgroundWipe->setVisible(false); + // Snapmatic Resolution + snapmaticResolution = SnapmaticPicture::getSnapmaticResolution(); + ui->cbResolution->addItem("GTA V", snapmaticResolution); + ui->cbResolution->addItem("FiveM", QSize(1920, 1072)); + ui->cbResolution->addItem("1280x720", QSize(1280, 720)); + ui->cbResolution->addItem("1920x1080", QSize(1920, 1080)); + ui->cbResolution->addItem("2560x1440", QSize(2560, 1440)); + // Set Import Settings QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); settings.beginGroup("Import"); @@ -116,13 +123,12 @@ ImportDialog::ImportDialog(QString profileName, QWidget *parent) : #endif // Options menu - optionsMenu = new QMenu(this); - optionsMenu->addAction(tr("&Import new Picture..."), this, SLOT(importNewPicture())); - optionsMenu->addAction(tr("&Crop Picture..."), this, SLOT(cropPicture())); - optionsMenu->addSeparator(); - optionsMenu->addAction(tr("&Load Settings..."), this, SLOT(loadImportSettings())); - optionsMenu->addAction(tr("&Save Settings..."), this, SLOT(saveImportSettings())); - ui->cmdOptions->setMenu(optionsMenu); + optionsMenu.addAction(tr("&Import new Picture..."), this, SLOT(importNewPicture())); + optionsMenu.addAction(tr("&Crop Picture..."), this, SLOT(cropPicture())); + optionsMenu.addSeparator(); + optionsMenu.addAction(tr("&Load Settings..."), this, SLOT(loadImportSettings())); + optionsMenu.addAction(tr("&Save Settings..."), this, SLOT(saveImportSettings())); + ui->cmdOptions->setMenu(&optionsMenu); setMaximumSize(sizeHint()); setMinimumSize(sizeHint()); @@ -131,97 +137,84 @@ ImportDialog::ImportDialog(QString profileName, QWidget *parent) : ImportDialog::~ImportDialog() { - delete optionsMenu; delete ui; } void ImportDialog::processImage() { - if (workImage.isNull()) return; + if (workImage.isNull()) + return; + QImage snapmaticImage = workImage; - QPixmap snapmaticPixmap(snapmaticResolutionW, snapmaticResolutionH); + QPixmap snapmaticPixmap(snapmaticResolution); snapmaticPixmap.fill(selectedColour); QPainter snapmaticPainter(&snapmaticPixmap); qreal screenRatioPR = AppEnv::screenRatioPR(); - if (!backImage.isNull()) - { - if (!ui->cbStretch->isChecked()) - { + if (!backImage.isNull()) { + if (!ui->cbStretch->isChecked()) { int diffWidth = 0; int diffHeight = 0; - if (backImage.width() != snapmaticResolutionW) - { - diffWidth = snapmaticResolutionW - backImage.width(); + if (backImage.width() != snapmaticResolution.width()) { + diffWidth = snapmaticResolution.width() - backImage.width(); diffWidth = diffWidth / 2; } - else if (backImage.height() != snapmaticResolutionH) - { - diffHeight = snapmaticResolutionH - backImage.height(); + else if (backImage.height() != snapmaticResolution.height()) { + diffHeight = snapmaticResolution.height() - backImage.height(); diffHeight = diffHeight / 2; } snapmaticPainter.drawImage(0 + diffWidth, 0 + diffHeight, backImage); } - else - { - snapmaticPainter.drawImage(0, 0, QImage(backImage).scaled(snapmaticResolutionW, snapmaticResolutionH, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + else { + snapmaticPainter.drawImage(0, 0, QImage(backImage).scaled(snapmaticResolution, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); } - if (ui->cbAvatar->isChecked() && ui->cbForceAvatarColour->isChecked()) - { + if (ui->cbAvatar->isChecked() && ui->cbForceAvatarColour->isChecked()) { snapmaticPainter.fillRect(snapmaticAvatarPlacementW, snapmaticAvatarPlacementH, snapmaticAvatarResolution, snapmaticAvatarResolution, selectedColour); } } - if (insideAvatarZone) - { + if (insideAvatarZone) { // Avatar mode int diffWidth = 0; int diffHeight = 0; - if (!ui->cbIgnore->isChecked()) - { + if (!ui->cbIgnore->isChecked()) { snapmaticImage = snapmaticImage.scaled(snapmaticAvatarResolution, snapmaticAvatarResolution, Qt::KeepAspectRatio, Qt::SmoothTransformation); - if (snapmaticImage.width() > snapmaticImage.height()) - { + if (snapmaticImage.width() > snapmaticImage.height()) { diffHeight = snapmaticAvatarResolution - snapmaticImage.height(); diffHeight = diffHeight / 2; } - else if (snapmaticImage.width() < snapmaticImage.height()) - { + else if (snapmaticImage.width() < snapmaticImage.height()) { diffWidth = snapmaticAvatarResolution - snapmaticImage.width(); diffWidth = diffWidth / 2; } } - else - { + else { snapmaticImage = snapmaticImage.scaled(snapmaticAvatarResolution, snapmaticAvatarResolution, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); } snapmaticPainter.drawImage(snapmaticAvatarPlacementW + diffWidth, snapmaticAvatarPlacementH + diffHeight, snapmaticImage); - if (ui->cbWatermark->isChecked()) { processWatermark(&snapmaticPainter); } + if (ui->cbWatermark->isChecked()) + processWatermark(&snapmaticPainter); imageTitle = tr("Custom Avatar", "Custom Avatar Description in SC, don't use Special Character!"); } - else - { + else { // Picture mode int diffWidth = 0; int diffHeight = 0; - if (!ui->cbIgnore->isChecked()) - { - snapmaticImage = snapmaticImage.scaled(snapmaticResolutionW, snapmaticResolutionH, Qt::KeepAspectRatio, Qt::SmoothTransformation); - if (snapmaticImage.width() != snapmaticResolutionW) - { - diffWidth = snapmaticResolutionW - snapmaticImage.width(); + if (!ui->cbIgnore->isChecked()) { + snapmaticImage = snapmaticImage.scaled(snapmaticResolution, Qt::KeepAspectRatio, Qt::SmoothTransformation); + if (snapmaticImage.width() != snapmaticResolution.width()) { + diffWidth = snapmaticResolution.width() - snapmaticImage.width(); diffWidth = diffWidth / 2; } - else if (snapmaticImage.height() != snapmaticResolutionH) - { - diffHeight = snapmaticResolutionH - snapmaticImage.height(); + else if (snapmaticImage.height() != snapmaticResolution.height()) { + diffHeight = snapmaticResolution.height() - snapmaticImage.height(); diffHeight = diffHeight / 2; } } - else - { - snapmaticImage = snapmaticImage.scaled(snapmaticResolutionW, snapmaticResolutionH, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + else { + snapmaticImage = snapmaticImage.scaled(snapmaticResolution, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); } snapmaticPainter.drawImage(0 + diffWidth, 0 + diffHeight, snapmaticImage); - if (ui->cbWatermark->isChecked()) { processWatermark(&snapmaticPainter); } + if (ui->cbWatermark->isChecked()) + processWatermark(&snapmaticPainter); imageTitle = tr("Custom Picture", "Custom Picture Description in SC, don't use Special Character!"); } snapmaticPainter.end(); @@ -232,6 +225,43 @@ void ImportDialog::processImage() ui->labPicture->setPixmap(snapmaticPixmap.scaled(snapmaticResolutionLW * screenRatioPR, snapmaticResolutionLH * screenRatioPR, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); } +void ImportDialog::reworkImage() +{ + workImage = QImage(); + if (origImage.width() == origImage.height()) { + if (ui->cbResolution->currentIndex() == 0) { + insideAvatarZone = true; + ui->cbAvatar->setChecked(true); + } + else { + insideAvatarZone = false; + ui->cbAvatar->setChecked(false); + } + if (origImage.height() > snapmaticResolution.height()) { + workImage = origImage.scaled(snapmaticResolution.height(), snapmaticResolution.height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + } + else { + workImage = origImage; + } + } + else if (origImage.width() > snapmaticResolution.width() && origImage.width() > origImage.height()) { + insideAvatarZone = false; + ui->cbAvatar->setChecked(false); + workImage = origImage.scaledToWidth(snapmaticResolution.width(), Qt::SmoothTransformation); + } + else if (origImage.height() > snapmaticResolution.height() && origImage.height() > origImage.width()) { + insideAvatarZone = false; + ui->cbAvatar->setChecked(false); + workImage = origImage.scaledToHeight(snapmaticResolution.height(), Qt::SmoothTransformation); + } + else { + insideAvatarZone = false; + ui->cbAvatar->setChecked(false); + workImage = origImage; + } + processImage(); +} + void ImportDialog::processWatermark(QPainter *snapmaticPainter) { bool blackWatermark = false; @@ -277,21 +307,21 @@ void ImportDialog::processSettings(QString settingsProfile, bool setDefault) { QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); settings.beginGroup("Import"); - if (setDefault) - { + if (setDefault) { settings.setValue("Profile", settingsProfile); } - if (settingsProfile == "Default") - { + if (settingsProfile == "Default") { watermarkAvatar = true; watermarkPicture = false; selectedColour = QColor::fromRgb(0, 0, 0, 255); backImage = QImage(); ui->cbStretch->setChecked(false); ui->cbForceAvatarColour->setChecked(false); + ui->cbUnlimited->setChecked(false); + ui->cbImportAsIs->setChecked(false); + ui->cbResolution->setCurrentIndex(0); } - else - { + else { settings.beginGroup(settingsProfile); watermarkAvatar = settings.value("WatermarkAvatar", true).toBool(); watermarkPicture = settings.value("WatermarkPicture", false).toBool(); @@ -299,27 +329,31 @@ void ImportDialog::processSettings(QString settingsProfile, bool setDefault) selectedColour = qvariant_cast(settings.value("SelectedColour", QColor::fromRgb(0, 0, 0, 255))); ui->cbStretch->setChecked(settings.value("BackgroundStretch", false).toBool()); ui->cbForceAvatarColour->setChecked(settings.value("ForceAvatarColour", false).toBool()); + ui->cbUnlimited->setChecked(settings.value("UnlimitedBuffer", false).toBool()); + ui->cbImportAsIs->setChecked(settings.value("ImportAsIs", false).toBool()); + const QVariant data = settings.value("Resolution", SnapmaticPicture::getSnapmaticResolution()); + if (data.type() == QVariant::Size) { + int index = ui->cbResolution->findData(data); + if (index != -1) { + ui->cbResolution->setCurrentIndex(index); + } + } settings.endGroup(); } - if (!workImage.isNull()) - { - if (ui->cbAvatar->isChecked()) - { + if (!workImage.isNull()) { + if (ui->cbAvatar->isChecked()) { ui->cbWatermark->setChecked(watermarkAvatar); } - else - { + else { ui->cbWatermark->setChecked(watermarkPicture); } } ui->labColour->setText(tr("Background Colour: %1").arg(selectedColour.name())); - if (!backImage.isNull()) - { + if (!backImage.isNull()) { ui->labBackgroundImage->setText(tr("Background Image: %1").arg(tr("Storage", "Background Image: Storage"))); ui->cmdBackgroundWipe->setVisible(true); } - else - { + else { ui->labBackgroundImage->setText(tr("Background Image:")); ui->cmdBackgroundWipe->setVisible(false); } @@ -337,6 +371,15 @@ void ImportDialog::saveSettings(QString settingsProfile) settings.setValue("SelectedColour", selectedColour); settings.setValue("BackgroundStretch", ui->cbStretch->isChecked()); settings.setValue("ForceAvatarColour", ui->cbForceAvatarColour->isChecked()); + const QVariant data = ui->cbResolution->currentData(); + if (data.type() == QVariant::Size) { + settings.setValue("Resolution", ui->cbResolution->currentData()); + } + else { + settings.setValue("Resolution", SnapmaticPicture::getSnapmaticResolution()); + } + settings.setValue("UnlimitedBuffer", ui->cbUnlimited->isChecked()); + settings.setValue("ImportAsIs", ui->cbImportAsIs->isChecked()); settings.endGroup(); settings.setValue("Profile", settingsProfile); settings.endGroup(); @@ -488,11 +531,11 @@ void ImportDialog::loadImportSettings() bool ok; QStringList profileList; profileList << tr("Default", "Default as Default Profile") - << tr("Profile %1", "Profile %1 as Profile 1").arg("1") - << tr("Profile %1", "Profile %1 as Profile 1").arg("2") - << tr("Profile %1", "Profile %1 as Profile 1").arg("3") - << tr("Profile %1", "Profile %1 as Profile 1").arg("4") - << tr("Profile %1", "Profile %1 as Profile 1").arg("5"); + << tr("Profile %1", "Profile %1 as Profile 1").arg("1") + << tr("Profile %1", "Profile %1 as Profile 1").arg("2") + << tr("Profile %1", "Profile %1 as Profile 1").arg("3") + << tr("Profile %1", "Profile %1 as Profile 1").arg("4") + << tr("Profile %1", "Profile %1 as Profile 1").arg("5"); QString sProfile = QInputDialog::getItem(this, tr("Load Settings..."), tr("Please select your settings profile"), profileList, 0, false, &ok, windowFlags()); if (ok) { @@ -536,10 +579,10 @@ void ImportDialog::saveImportSettings() bool ok; QStringList profileList; profileList << tr("Profile %1", "Profile %1 as Profile 1").arg("1") - << tr("Profile %1", "Profile %1 as Profile 1").arg("2") - << tr("Profile %1", "Profile %1 as Profile 1").arg("3") - << tr("Profile %1", "Profile %1 as Profile 1").arg("4") - << tr("Profile %1", "Profile %1 as Profile 1").arg("5"); + << tr("Profile %1", "Profile %1 as Profile 1").arg("2") + << tr("Profile %1", "Profile %1 as Profile 1").arg("3") + << tr("Profile %1", "Profile %1 as Profile 1").arg("4") + << tr("Profile %1", "Profile %1 as Profile 1").arg("5"); QString sProfile = QInputDialog::getItem(this, tr("Save Settings..."), tr("Please select your settings profile"), profileList, 0, false, &ok, windowFlags()); if (ok) { @@ -570,44 +613,49 @@ void ImportDialog::saveImportSettings() QImage ImportDialog::image() { - return newImage; + if (ui->cbImportAsIs->isChecked()) { + return origImage; + } + else { + return newImage; + } } void ImportDialog::setImage(QImage *image_) { origImage = *image_; workImage = QImage(); - if (image_->width() == image_->height()) - { - insideAvatarZone = true; - ui->cbAvatar->setChecked(true); - if (image_->height() > snapmaticResolutionH) - { - workImage = image_->scaled(snapmaticResolutionH, snapmaticResolutionH, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + if (image_->width() == image_->height()) { + if (ui->cbResolution->currentIndex() == 0) { + insideAvatarZone = true; + ui->cbAvatar->setChecked(true); + } + else { + insideAvatarZone = false; + ui->cbAvatar->setChecked(false); + } + if (image_->height() > snapmaticResolution.height()) { + workImage = image_->scaled(snapmaticResolution.height(), snapmaticResolution.height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); delete image_; } - else - { + else { workImage = *image_; delete image_; } } - else if (image_->width() > snapmaticResolutionW && image_->width() > image_->height()) - { + else if (image_->width() > snapmaticResolution.width() && image_->width() > image_->height()) { insideAvatarZone = false; ui->cbAvatar->setChecked(false); - workImage = image_->scaledToWidth(snapmaticResolutionW, Qt::SmoothTransformation); + workImage = image_->scaledToWidth(snapmaticResolution.width(), Qt::SmoothTransformation); delete image_; } - else if (image_->height() > snapmaticResolutionH && image_->height() > image_->width()) - { + else if (image_->height() > snapmaticResolution.height() && image_->height() > image_->width()) { insideAvatarZone = false; ui->cbAvatar->setChecked(false); - workImage = image_->scaledToHeight(snapmaticResolutionH, Qt::SmoothTransformation); + workImage = image_->scaledToHeight(snapmaticResolution.height(), Qt::SmoothTransformation); delete image_; } - else - { + else { insideAvatarZone = false; ui->cbAvatar->setChecked(false); workImage = *image_; @@ -619,18 +667,15 @@ void ImportDialog::setImage(QImage *image_) void ImportDialog::lockSettings(bool lock) { - ui->cbAvatar->setDisabled(lock); - ui->cbForceAvatarColour->setDisabled(lock); - ui->cbIgnore->setDisabled(lock); - ui->cbStretch->setDisabled(lock); - ui->cbWatermark->setDisabled(lock); - ui->cmdBackgroundChange->setDisabled(lock); - ui->cmdBackgroundWipe->setDisabled(lock); - ui->cmdColourChange->setDisabled(lock); - ui->labBackgroundImage->setDisabled(lock); - ui->labColour->setDisabled(lock); - ui->gbSettings->setDisabled(lock); - ui->gbBackground->setDisabled(lock); + ui->gbAdvanced->setDisabled(lock); + if (ui->cbImportAsIs->isChecked()) { + ui->gbBackground->setDisabled(true); + ui->gbSettings->setDisabled(true); + } + else { + ui->gbBackground->setDisabled(lock); + ui->gbSettings->setDisabled(lock); + } ui->cmdOK->setDisabled(lock); settingsLocked = lock; } @@ -652,6 +697,11 @@ bool ImportDialog::isImportAgreed() return importAgreed; } +bool ImportDialog::isUnlimitedBuffer() +{ + return ui->cbUnlimited->isChecked(); +} + bool ImportDialog::areSettingsLocked() { return settingsLocked; @@ -670,10 +720,11 @@ void ImportDialog::on_cbIgnore_toggled(bool checked) void ImportDialog::on_cbAvatar_toggled(bool checked) { - if (!workImage.isNull() && workImage.width() == workImage.height() && !checked) - { - if (QMessageBox::No == QMessageBox::warning(this, tr("Snapmatic Avatar Zone"), tr("Are you sure to use a square image outside of the Avatar Zone?\nWhen you want to use it as Avatar the image will be detached!"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No)) - { + if (ui->cbResolution->currentIndex() != 0) + return; + + if (!workImage.isNull() && workImage.width() == workImage.height() && !checked) { + if (QMessageBox::No == QMessageBox::warning(this, tr("Snapmatic Avatar Zone"), tr("Are you sure to use a square image outside of the Avatar Zone?\nWhen you want to use it as Avatar the image will be detached!"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No)) { ui->cbAvatar->setChecked(true); insideAvatarZone = true; return; @@ -681,12 +732,10 @@ void ImportDialog::on_cbAvatar_toggled(bool checked) } insideAvatarZone = ui->cbAvatar->isChecked(); watermarkBlock = true; - if (insideAvatarZone) - { + if (insideAvatarZone) { ui->cbWatermark->setChecked(watermarkAvatar); } - else - { + else { ui->cbWatermark->setChecked(watermarkPicture); } watermarkBlock = false; @@ -788,7 +837,7 @@ fileDialogPreOpen: QMessageBox::warning(this, QApplication::translate("ProfileInterface", "Import"), QApplication::translate("ProfileInterface", "Can't import %1 because file can't be parsed properly").arg("\""+selectedFileName+"\"")); goto fileDialogPreOpen; } - backImage = importImage.scaled(snapmaticResolutionW, snapmaticResolutionH, Qt::KeepAspectRatio, Qt::SmoothTransformation); + backImage = importImage.scaled(snapmaticResolution, Qt::KeepAspectRatio, Qt::SmoothTransformation); backgroundPath = selectedFile; ui->labBackgroundImage->setText(tr("Background Image: %1").arg(tr("File", "Background Image: File"))); ui->cmdBackgroundWipe->setVisible(true); @@ -826,14 +875,50 @@ void ImportDialog::on_cbWatermark_toggled(bool checked) { if (!watermarkBlock) { - if (insideAvatarZone) - { + if (insideAvatarZone) { watermarkAvatar = checked; } - else - { + else { watermarkPicture = checked; } processImage(); } } + +void ImportDialog::on_cbImportAsIs_toggled(bool checked) +{ + ui->cbResolution->setDisabled(checked); + ui->labResolution->setDisabled(checked); + ui->gbBackground->setDisabled(checked); + ui->gbSettings->setDisabled(checked); +} + +void ImportDialog::on_cbResolution_currentIndexChanged(int index) +{ + Q_UNUSED(index) + const QVariant data = ui->cbResolution->currentData(); + if (data.type() == QVariant::Size) { + const QSize dataSize = data.toSize(); + if (dataSize == SnapmaticPicture::getSnapmaticResolution()) { + ui->cbAvatar->setEnabled(true); + snapmaticResolution = dataSize; + reworkImage(); + } + else { + if (!workImage.isNull() && workImage.width() == workImage.height() && ui->cbAvatar->isChecked()) { + if (QMessageBox::No == QMessageBox::warning(this, tr("Snapmatic Avatar Zone"), tr("Are you sure to use a square image outside of the Avatar Zone?\nWhen you want to use it as Avatar the image will be detached!"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No)) { + ui->cbResolution->setCurrentIndex(0); + ui->cbAvatar->setChecked(true); + insideAvatarZone = true; + return; + } + } + ui->cbAvatar->setChecked(false); + ui->cbAvatar->setDisabled(true); + insideAvatarZone = false; + ui->cbWatermark->setChecked(watermarkPicture); + snapmaticResolution = dataSize; + reworkImage(); + } + } +} diff --git a/ImportDialog.h b/ImportDialog.h index 28ce21e..562e34b 100644 --- a/ImportDialog.h +++ b/ImportDialog.h @@ -39,10 +39,12 @@ public: void lockSettings(bool lock); void enableOverwriteMode(); bool isImportAgreed(); + bool isUnlimitedBuffer(); bool areSettingsLocked(); private slots: void processImage(); + void reworkImage(); void cropPicture(); void importNewPicture(); void loadImportSettings(); @@ -58,6 +60,8 @@ private slots: void on_cbStretch_toggled(bool checked); void on_cbForceAvatarColour_toggled(bool checked); void on_cbWatermark_toggled(bool checked); + void on_cbImportAsIs_toggled(bool checked); + void on_cbResolution_currentIndexChanged(int index); private: QString profileName; @@ -70,7 +74,8 @@ private: QImage origImage; QImage newImage; QColor selectedColour; - QMenu *optionsMenu; + QMenu optionsMenu; + QSize snapmaticResolution; bool insideAvatarZone; bool watermarkPicture; bool watermarkAvatar; diff --git a/ImportDialog.ui b/ImportDialog.ui index c62dcd7..601e98b 100644 --- a/ImportDialog.ui +++ b/ImportDialog.ui @@ -7,7 +7,7 @@ 0 0 516 - 512 + 677 @@ -297,6 +297,63 @@ + + + + Advanced + + + + + + + + Resolution: + + + + + + + + 0 + 0 + + + + Snapmatic resolution + + + + + + + + + + + Avoid compression and expand buffer instead, improves picture quality, but may break Snapmatic + + + Unlimited Buffer + + + + + + + Import as-is, don't change the picture at all, guarantee to break Snapmatic unless you know what you doing + + + Import as-is + + + + + + + + diff --git a/ProfileInterface.cpp b/ProfileInterface.cpp index 3e52093..4070fa8 100644 --- a/ProfileInterface.cpp +++ b/ProfileInterface.cpp @@ -1,6 +1,6 @@ /***************************************************************************** * gta5view Grand Theft Auto V Profile Viewer -* Copyright (C) 2016-2019 Syping +* Copyright (C) 2016-2020 Syping * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -805,7 +805,7 @@ bool ProfileInterface::importFile(QString selectedFile, QDateTime importDateTime importDialog->exec(); if (importDialog->isImportAgreed()) { - if (picture->setImage(importDialog->image())) + if (picture->setImage(importDialog->image(), importDialog->isUnlimitedBuffer())) { SnapmaticProperties spJson = picture->getSnapmaticProperties(); spJson.uid = getRandomUid(); @@ -1058,7 +1058,7 @@ bool ProfileInterface::importImage(QImage *snapmaticImage, QDateTime importDateT importDialog->exec(); if (importDialog->isImportAgreed()) { - if (picture->setImage(importDialog->image())) + if (picture->setImage(importDialog->image(), importDialog->isUnlimitedBuffer())) { SnapmaticProperties spJson = picture->getSnapmaticProperties(); spJson.uid = getRandomUid(); diff --git a/res/gta5sync.ts b/res/gta5sync.ts index 5ba25e5..afdcce6 100644 --- a/res/gta5sync.ts +++ b/res/gta5sync.ts @@ -166,27 +166,27 @@ Pictures and Savegames ImageEditorDialog - + Overwrite Image... - + Apply changes - + &Overwrite - + Discard changes - + &Close @@ -246,9 +246,9 @@ Pictures and Savegames - - - + + + Background Colour: <span style="color: %1">%1</span> @@ -265,9 +265,9 @@ Pictures and Savegames - - - + + + Background Image: @@ -292,170 +292,207 @@ Pictures and Savegames - + + Advanced + + + + + Resolution: + + + + + Snapmatic resolution + + + + + Avoid compression and expand buffer instead, improves picture quality, but may break Snapmatic + + + + + Unlimited Buffer + + + + + Import as-is, don't change the picture at all, guarantee to break Snapmatic unless you know what you doing + + + + + Import as-is + + + + Import options - + &Options - + Import picture - + &OK - + Discard picture - + &Cancel - + &Import new Picture... - + &Crop Picture... - + &Load Settings... - + &Save Settings... - + Custom Avatar Custom Avatar Description in SC, don't use Special Character! - + Custom Picture Custom Picture Description in SC, don't use Special Character! - + Storage Background Image: Storage - + Crop Picture... - + &Crop - + Crop Picture - - + + Please import a new picture first - - + + Default Default as Default Profile - - - - - - - - - - + + + + - - - - + + + + + + + + + + Profile %1 Profile %1 as Profile 1 - - + + Load Settings... - - + + Save Settings... - + + Snapmatic Avatar Zone - + + 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! - + Select Colour... - - + + Background Image: %1 - - + + Please select your settings profile - + File Background Image: File @@ -1272,8 +1309,8 @@ Press 1 for Default View - - + + @@ -1295,40 +1332,40 @@ Press 1 for Default View - - - - - - + + + + + + Import - - + + All image files (%1) - - + + All files (**) - - + + Can't import %1 because file can't be open - - + + Can't import %1 because file can't be parsed properly @@ -2008,24 +2045,24 @@ Press 1 for Default View SnapmaticPicture - + JSON is incomplete and malformed - + JSON is incomplete - + JSON is malformed - + PHOTO - %1 @@ -2035,37 +2072,37 @@ Press 1 for Default View - + header not exists - + header is malformed - + picture not exists (%1) - + JSON not exists (%1) - + title not exists (%1) - + description not exists (%1) - + reading file %1 because of %2 Example for %2: JSON is malformed error diff --git a/res/gta5sync_de.qm b/res/gta5sync_de.qm index 00627a74394e41a5b363cdc31fce4035517adae1..41f12bd5ada456175034a1fd56959d75c974bdc7 100644 GIT binary patch delta 4321 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 delta 3384 zcmX9=d0b8DAAat+=iGbGIrnx)B3qUiQe>?xA&jhr$PyAJW2!U2Kf}l}^zk!Ue+)kSp62}Z-20w)dA`r{{eIs!KSsa#gOJeF)&RgbpjiZQ zF<^1ju;*z&SP6VR8xSjj4i$hj9O!gg!;O6a7Z0FK9l)(8V82PjHitFL2;*Ekpl*_Zg4Fe0JL}w*IEKuE#O*9AS)QIwFI)>!}Y%%fxT{UOD>^e*Wq?%FfjNX z+-eVAUSGqMA@IDN$Nh@Ys~h*56@USuRB+#47`TSGum=WtR#DaC7&OJ%1~k8jp*j4J z7JxB%#Xy%d1m#}?Mvp+rgau2^A=|Vz(;>sQpk5}=y(#C_$$MAHw#DT+j8SW2^SfW$@ zXa_7)G)(THVP>VyX}>eju0l7z%Nt5vri)4s2KxV^OZ4sm1Xy&5iyktEN;Pc$m4W*X}cBhmxc03&dZrBTz&onoqZ_$d1)x)>@Pgn>j3QPB~(8RWUg*$B)o_t z-%j5NZ|__ILehnQ`ct@iJA{uN>jFOv*UNiv06$jf>tFl~47jClxPafg=jc5azU4-x z`oP@vKra{l%tbAL11b7BnRKFMBMp5n>eqas!-fa?&0}Rc9jq_(AW^@5`twt&nX41+ z^(C9RQOFzpl@)YGUar5olsVe?lK$OJVuSyR2DO9-JBX&y_gLzmMVCl>CjAG|<0DgK z%yiMKFW0YGERN{56IhicuDscsLx`mfMPl3rI##c(xG5-}tq5Y;`U+sr@8X^T zHYWYREb+h-5(ye4=C;cMq9qMeuZp=jlh~WG#r&ADfcjoMrA}oVNfV29c4eFJ63Z8D z1^PD7F#5iRX^CR_@fgm#CO(~XipA$GzQ2AM=zLrJbkc*wZcAeAx;Yml2U~U$BQBF1 zYH^si)OB|Xu+2dVx>5|p^pa)|V{SShk-~OO1E$`WA`>b7{6Z;Orj%P}NH+ICpy?JV zA*=(idxVtUj!Gn)l+ss|;8wGg@nJMD{aYz><#^_*x0EYvVDXo!*9N=sK`K@ zp-LAIbe&-MaQX&4SB=Ws1ytg!hVv$BxT=NGLEH!ArWhOF^9Q_3jV_ zmKZ0`J_;!PjiFIg?yFei%)Xr0XoiO2A;#HN{6D^%G2-_Jz;I7vRNfvS-S*CyuyY}q zNXBhfwy~pHjG5=c*^!Hkhlc*mgPe>7Ij?~oPmD*eQ_{$-#^Pd@TYDeleZK(SOUI0l zPcV1BzhV44rwfo*Z2VkU&Au0Gl6;x8JD-}IO5A~I(@fq+xo^vGQ{NAn?2m4yey?ip zs?64=VcF$CN{lHigN(xNnj+4H0xQx@%c|&Iz(rG3I6VuTYFg3aHp?-?v@ew7kvh}y z4za+3cvDgFb$Y(iRD7HV8iGtE7nr0|s!TPf7?7*k^tw57Xp(CBGKm&V=_T7ckcg8Y zJDxqq`rle1JKpsn({^&xMUUAB^m6O>Eh$Y)x$R;SG0)eqeZ1VcBa_B2Q}&DkwHw;Mk_RTmQ@LQ-FYyu(en9pYdNbnt@+4ycub3(F)Fdhx^I4uV=p~Rj zNuD$PC8ZNr$@AWI29_?8*PUe~EiCc|-+L^pF>;){2k)?Ja^^XIdhaLac3|>^_{o=i zxNi9y`SPPLz}jT_>ck-|$K~=(cQ3%FiCh!(idGI#bkz(X+FQ{*tHpT5QqP$LQWX2M z+`mzt(%jF+gFSC3U#}R@FrJsntmM#G&c8XmM$ylWTQw^w@Y`2f@( zr}UXJl6XMztLFOE0m{fH%q7QH%Geq^;NZ{7xF@t=P@*!WFq#3KQN9HO^cb%s59a<~ z)hNlf+8=GawSkci8m=9$6s}vtx_+%3Z&HsQcT-NBt7MX=X#`JyANl1dGi$cpXX zfo0>gf#g`Fd>=h@`cApoERfQhlv@WVrE7`u=rBEv_@F#i=d(e*SE?`5iU^yktBq{# z1y%3kz)tyxYOR%iL8aR82no5(QeCR-x!-BEYZRro9#Ojue9NlZpaxy*Obh*OYK$Gd z^Gs1!&#C0b+toOa(ey4yjq`oX=R&H6$z^I>8JRn`QxiX} zNfopFj1hhpWUiBUjSXjw*DpS|&q|yS{Rc5EtjhL)=%x*5PdFRX>W*)eiOx-V- z$CaL=m#@qrEy>id*}VK%Fz@pkb8LS`plmQFwdc5+YfjgRtd=qjlRlc$eM!)=%$#YZ zA`9cpCu?X?_Kq#(YJHoF$^7g`=3>8%=1-Aao>OQss^ryVf~8T8KRbS^rSUy?J`Yw} z8dtOZBo4E<-r;eHhb>;Q?BornYS`hUrI*h-UcSdIy)V+_PDUjr7Id*0|pSUR+&Y5O8-XM#)-qvz{ zd_DH3&6elWd$WiFEH%Fn>&&zhYj6M1Z|oXhe84N`v|U##+sE)!JKsJ`A;)aHh-eDm z(_(idWF|1-jE2iI?9POjuuTkoVQn;v!pu>uyM=X z199Hgx$%rdb+9IvQh48k*4T9tGCir6d$E%XYOYvt*ws^C;Nt#Lw`D=c LZUt(m%!K~~1PS5& diff --git a/res/gta5sync_de.ts b/res/gta5sync_de.ts index fb2996f..3780483 100644 --- a/res/gta5sync_de.ts +++ b/res/gta5sync_de.ts @@ -184,27 +184,27 @@ Snapmatic Bilder und Spielständen Snapmatic Bild Editor - + Overwrite Image... Bild überschreiben... - + Apply changes Änderungen übernehmen - + &Overwrite &Überschreiben - + Discard changes Änderungen verwerfen - + &Close S&chließen @@ -256,9 +256,9 @@ Snapmatic Bilder und Spielständen - - - + + + Background Colour: <span style="color: %1">%1</span> Hintergrundfarbe: <span style="color: %1">%1</span> @@ -284,8 +284,13 @@ Snapmatic Bilder und Spielständen Hintergrundbild entfernen - - + + Import as-is, don't change the picture at all, guarantee to break Snapmatic unless you know what you doing + Importiere das Bild ohne Veränderungen, Snapmatic wird garantiert beschädigt wenn du nicht weißt was du tust + + + + Background Image: %1 Hintergrundbild: %1 @@ -300,173 +305,205 @@ Snapmatic Bilder und Spielständen Erzwinge Farbe in Avatar Zone - + + Advanced + Erweitert + + + + Resolution: + Auflösung: + + + + Snapmatic resolution + Snapmatic Auflösung + + + + Avoid compression and expand buffer instead, improves picture quality, but may break Snapmatic + Vermeide Kom­pri­mie­rung und vergrößere Buffer stattdessen, verbessert Bild Qualität, aber könnte Snapmatic beschädigen + + + + Unlimited Buffer + Un­li­mi­tierter Buffer + + + + Import as-is + Importiere ohne Änderungen + + + Import options Import Optionen - + &Options &Optionen - + Import picture Bild importieren - + &OK &OK - + Discard picture Bild verwerfen - + &Cancel Abbre&chen - - - + + + Background Image: Hintergrundbild: - + &Import new Picture... Neues Bild &importieren... - + &Crop Picture... Bild zu&schneiden... - + &Load Settings... Einstellungen &laden... - + &Save Settings... Einstellungen &speichern... - + Custom Avatar Custom Avatar Description in SC, don't use Special Character! Eigener Avatar - + Custom Picture Custom Picture Description in SC, don't use Special Character! Eigenes Bild - + Storage Background Image: Storage Speicher - + Crop Picture... Bild zuschneiden... - + &Crop Zu&schneiden - + Crop Picture Bild zuschneiden - - + + Please import a new picture first Bitte importiere ein neues Bild zuerst - - + + Default Default as Default Profile Standard - - - - - - - - - - + + + + - - - - + + + + + + + + + + Profile %1 Profile %1 as Profile 1 Profil %1 - - + + Load Settings... Einstellungen laden... - - + + Please select your settings profile Bitte wähle dein Einstellungsprofil aus - - + + Save Settings... Einstellungen speichern... - + + 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! Bist du sicher ein Quadrat Bild außerhalb der Avatar Zone zu verwenden? Wenn du es als Avatar verwenden möchtest wird es abgetrennt! - + + Snapmatic Avatar Zone Snapmatic Avatar Zone - + Select Colour... Farbe auswählen... - + File Background Image: File Datei @@ -1299,8 +1336,8 @@ Drücke 1 für Standardmodus <h4>Folgende Snapmatic Bilder wurden repariert</h4>%1 - - + + @@ -1322,12 +1359,12 @@ Drücke 1 für Standardmodus Importieren... - - - - - - + + + + + + Import Importieren @@ -1349,15 +1386,15 @@ Drücke 1 für Standardmodus Importfähige Dateien (%1) - - + + All image files (%1) Alle Bilddateien (%1) - - + + All files (**) @@ -1391,15 +1428,15 @@ Drücke 1 für Standardmodus Fehler beim Lesen von Spielstanddatei - - + + Can't import %1 because file can't be open Kann %1 nicht importieren weil die Datei nicht geöffnet werden kann - - + + Can't import %1 because file can't be parsed properly Kann %1 nicht importieren weil die Datei nicht richtig gelesen werden kann @@ -2040,7 +2077,7 @@ Drücke 1 für Standardmodus SnapmaticPicture - + PHOTO - %1 FOTO - %1 @@ -2050,56 +2087,56 @@ Drücke 1 für Standardmodus Datei öffnen %1 - + header not exists Header nicht existiert - + header is malformed Header fehlerhaft ist - + picture not exists (%1) Bild nicht existiert (%1) - + JSON not exists (%1) JSON nicht existiert (%1) - + title not exists (%1) Titel nicht existiert (%1) - + description not exists (%1) Beschreibung nicht existiert (%1) - + reading file %1 because of %2 Example for %2: JSON is malformed error Datei lesen von %1 weil %2 - + JSON is incomplete and malformed JSON ist unvollständig und Fehlerhaft - + JSON is incomplete JSON ist unvollständig - + JSON is malformed JSON ist Fehlerhaft diff --git a/res/gta5sync_en_US.ts b/res/gta5sync_en_US.ts index ddf1da0..b0efae3 100644 --- a/res/gta5sync_en_US.ts +++ b/res/gta5sync_en_US.ts @@ -174,27 +174,27 @@ Pictures and Savegames - + Overwrite Image... - + Apply changes - + &Overwrite - + Discard changes - + &Close @@ -220,9 +220,9 @@ Pictures and Savegames - - - + + + Background Colour: <span style="color: %1">%1</span> Background Color: <span style="color: %1">%1</span> @@ -264,8 +264,8 @@ Pictures and Savegames - - + + Background Image: %1 @@ -290,172 +290,209 @@ Pictures and Savegames Force Color in Avatar Zone - + + Advanced + + + + + Resolution: + + + + + Snapmatic resolution + + + + + Avoid compression and expand buffer instead, improves picture quality, but may break Snapmatic + + + + + Unlimited Buffer + + + + + Import as-is, don't change the picture at all, guarantee to break Snapmatic unless you know what you doing + + + + + Import as-is + + + + Import options - + &Options - + Import picture - + &OK - + Discard picture - + &Cancel - - - + + + Background Image: - + &Import new Picture... - + &Crop Picture... - + &Load Settings... - + &Save Settings... - + Custom Avatar Custom Avatar Description in SC, don't use Special Character! - + Custom Picture Custom Picture Description in SC, don't use Special Character! - + Storage Background Image: Storage - + Crop Picture... - + &Crop - + Crop Picture - - + + Please import a new picture first - - + + Default Default as Default Profile - - - - - - - - - - + + + + - - - - + + + + + + + + + + Profile %1 Profile %1 as Profile 1 - - + + Load Settings... - - + + Please select your settings profile - - + + Save Settings... - + + Snapmatic Avatar Zone - + + 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! - + Select Colour... Select Color... - + File Background Image: File @@ -1292,8 +1329,8 @@ Press 1 for Default View - - + + @@ -1315,12 +1352,12 @@ Press 1 for Default View - - - - - - + + + + + + Import @@ -1348,15 +1385,15 @@ Press 1 for Default View - - + + All image files (%1) - - + + All files (**) @@ -1395,15 +1432,15 @@ Press 1 for Default View - - + + Can't import %1 because file can't be open - - + + Can't import %1 because file can't be parsed properly @@ -2007,7 +2044,7 @@ Press 1 for Default View SnapmaticPicture - + PHOTO - %1 @@ -2017,56 +2054,56 @@ Press 1 for Default View - + header not exists - + header is malformed - + picture not exists (%1) - + JSON not exists (%1) - + title not exists (%1) - + description not exists (%1) - + reading file %1 because of %2 Example for %2: JSON is malformed error - + JSON is incomplete and malformed - + JSON is incomplete - + JSON is malformed diff --git a/res/gta5sync_fr.ts b/res/gta5sync_fr.ts index 79be7fb..d4e8cca 100644 --- a/res/gta5sync_fr.ts +++ b/res/gta5sync_fr.ts @@ -184,27 +184,27 @@ et les fichiers de sauvegarde de Grand Theft Auto V Éditeur d'images Snapmatic - + Overwrite Image... Remplacer l'image... - + Apply changes Appliquer les modifications - + &Overwrite &Remplacer - + Discard changes Annuler les modifications - + &Close &Fermer @@ -256,9 +256,9 @@ et les fichiers de sauvegarde de Grand Theft Auto V - - - + + + Background Colour: <span style="color: %1">%1</span> Couleur de fond : <span style="color: %1">%1</span> @@ -284,8 +284,13 @@ et les fichiers de sauvegarde de Grand Theft Auto V Supprimer l'image de fond - - + + Import as-is, don't change the picture at all, guarantee to break Snapmatic unless you know what you doing + + + + + Background Image: %1 Image de fond : %1 @@ -300,173 +305,205 @@ et les fichiers de sauvegarde de Grand Theft Auto V Forcer la couleur dans la Zone d'Avatar - + + Advanced + + + + + Resolution: + + + + + Snapmatic resolution + + + + + Avoid compression and expand buffer instead, improves picture quality, but may break Snapmatic + + + + + Unlimited Buffer + + + + + Import as-is + + + + Import options Options d'importation - + &Options &Options - + Import picture Importer l'image - + &OK &OK - + Discard picture Supprimer l'image - + &Cancel A&nnuler - - - + + + Background Image: Image de fond : - + &Import new Picture... &Importer une nouvelle image... - + &Crop Picture... &Rogner l'image... - + &Load Settings... &Charger les paramètres... - + &Save Settings... &Sauvegarder les paramètres... - + Custom Avatar Custom Avatar Description in SC, don't use Special Character! Avatar personnalisé - + Custom Picture Custom Picture Description in SC, don't use Special Character! Image personnalisé - + Storage Background Image: Storage Stockage - + Crop Picture... Rogner l'image... - + &Crop &Rogner - + Crop Picture Rogner l'image - - + + Please import a new picture first Veuillez d'abord importer une nouvelle image - - + + Default Default as Default Profile Défaut - - - - - - - - - - + + + + - - - - + + + + + + + + + + Profile %1 Profile %1 as Profile 1 Profil %1 - - + + Load Settings... Charger les paramètres... - - + + Please select your settings profile Veuillez choisir votre profil de paramètres - - + + Save Settings... Sauvegarder les paramètres... - + + 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! Ê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 ! - + + Snapmatic Avatar Zone Zone d'Avatar Snapmatic - + Select Colour... Choisir une couleur... - + File Background Image: File Fichier @@ -1310,8 +1347,8 @@ Appuyer sur 1 pour le mode par défaut <h4>Les Snapmatic suivants ont été répaés</h4>%1 - - + + @@ -1333,12 +1370,12 @@ Appuyer sur 1 pour le mode par défaut Importer... - - - - - - + + + + + + Import Importer @@ -1355,15 +1392,15 @@ Appuyer sur 1 pour le mode par défaut Photos Snapmatic (PGTA*) - - + + All image files (%1) Toutes les images (%1) - - + + All files (**) @@ -1409,15 +1446,15 @@ Appuyer sur 1 pour le mode par défaut Impossible de lire le fichier de sauvegarde - - + + Can't import %1 because file can't be open Impossible d'importer %1, le fichier ne peut pas être ouvert - - + + Can't import %1 because file can't be parsed properly Impossible d'importer %1, le fichier ne peut pas être parsé correctement @@ -2043,7 +2080,7 @@ Appuyer sur 1 pour le mode par défaut SnapmaticPicture - + PHOTO - %1 PHOTO - %1 @@ -2053,56 +2090,56 @@ Appuyer sur 1 pour le mode par défaut ouverture du fichier %1 - + header not exists les headers n'existent pas - + header is malformed les headers sont incorrects - + picture not exists (%1) l'image n'existe pas (%1) - + JSON not exists (%1) le JSON n'existe pas (%1) - + title not exists (%1) le titre n'existe pas (%1) - + description not exists (%1) la description n'existe pas (%1) - + reading file %1 because of %2 Example for %2: JSON is malformed error lecture du fichier %1 : %2 - + JSON is incomplete and malformed JSON incomplet ou incorrect - + JSON is incomplete JSON incomplet - + JSON is malformed JSON incorrect diff --git a/res/gta5sync_ko.ts b/res/gta5sync_ko.ts index 53166ac..fb4ec79 100644 --- a/res/gta5sync_ko.ts +++ b/res/gta5sync_ko.ts @@ -176,27 +176,27 @@ Pictures and Savegames ImageEditorDialog - + Overwrite Image... 이미지 덮어쓰기... - + Apply changes 변경 사항 적용 - + &Overwrite 덮어쓰기(&O) - + Discard changes 변경 사항 무시 - + &Close 닫기(&C) @@ -256,9 +256,9 @@ Pictures and Savegames - - - + + + Background Colour: <span style="color: %1">%1</span> 배경 색상: <span style="color: %1">%1</span> @@ -275,9 +275,9 @@ Pictures and Savegames - - - + + + Background Image: 배경 이미지: @@ -302,57 +302,92 @@ Pictures and Savegames 아바타 구역에 색상을 적용합니다 - + + Advanced + + + + + Resolution: + + + + + Snapmatic resolution + + + + + Avoid compression and expand buffer instead, improves picture quality, but may break Snapmatic + + + + + Unlimited Buffer + + + + + Import as-is, don't change the picture at all, guarantee to break Snapmatic unless you know what you doing + + + + + Import as-is + + + + Import options 가져오기 옵션 - + &Options 옵션(&O) - + Import picture 사진 가져오기 - + &OK 확인(&O) - + Discard picture 사진 삭제 - + &Cancel 취소(&C) - + &Import new Picture... 새로운 사진 가져오기(&I)... - + &Crop Picture... 사진 자르기(&C)... - + &Load Settings... 설정 불러오기(&L)... - + &Save Settings... 설정 저장(&S)... - + Custom Avatar Custom Avatar Description in SC, don't use Special Character! @@ -360,7 +395,7 @@ Pictures and Savegames 사용자 지정 아바타 - + Custom Picture Custom Picture Description in SC, don't use Special Character! @@ -368,110 +403,112 @@ Pictures and Savegames 사용자 지정 사진 - - + + Background Image: %1 배경 이미지: %1 - + Storage Background Image: Storage 배경 이미지: 저장됨 저장됨 - + Crop Picture... 사진 자르기... - + &Crop 자르기(&C) - + Crop Picture 사진 자르기 - - + + Load Settings... 설정 불러오기... - - + + Please import a new picture first 먼저 새 사진을 가져오세요 - - + + Default Default as Default Profile 기본 프로필로 기본 설정 기본 - - - - - - - - - - + + + + - - - - + + + + + + + + + + Profile %1 Profile %1 as Profile 1 %1을 프로필 1로 지정합니다. 프로필 %1 - - + + Please select your settings profile 설정 프로필을 선택하세요 - - + + Save Settings... 설정 저장... - + + Snapmatic Avatar Zone 스낵매틱 아바타 영역 - + + 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! 아바타 구역 밖에서 네모난 이미지를 정말 사용합니까? 아바타로 사용하려는 경우 이미지가 분리됩니다! - + Select Colour... 색상 선택... - + File Background Image: File 배경 이미지: 파일 @@ -1304,8 +1341,8 @@ Press 1 for Default View %2 파일 중 %1 파일을 내보냅니다 - - + + @@ -1327,40 +1364,40 @@ Press 1 for Default View 가져오기... - - - - - - + + + + + + Import 가져오기 - - + + All image files (%1) 모든 이미지 파일 (%1) - - + + All files (**) 모든 파일 (**) - - + + Can't import %1 because file can't be open 파일을 열 수 없으므로 %1을 가져올 수 없습니다 - - + + Can't import %1 because file can't be parsed properly 파일을 구문 분석할 수 없으므로 %1을 가져올 수 없습니다 @@ -2065,24 +2102,24 @@ Press 1 for Default View SnapmaticPicture - + JSON is incomplete and malformed JSON이 불안정하고 형식이 잘못되었습니다 - + JSON is incomplete JSON이 불안정합니다 - + JSON is malformed 잘못된 JSON 형식 - + PHOTO - %1 사진 - %1 @@ -2092,37 +2129,37 @@ Press 1 for Default View 파일 열기 %1 - + header not exists 헤더가 존재하지 않습니다 - + header is malformed 헤더의 형식이 잘못되었습니다 - + picture not exists (%1) 사진이 존재하지 않습니다. (%1) - + JSON not exists (%1) JSON이 존재하지 않습니다. (%1) - + title not exists (%1) 제목이 존재하지 않습니다. (%1) - + description not exists (%1) 설명이 존재하지 않습니다. (%1) - + reading file %1 because of %2 Example for %2: JSON is malformed error %2의 예: JSON이 잘못된 형식입니다 diff --git a/res/gta5sync_ru.ts b/res/gta5sync_ru.ts index dec45db..29dff3e 100644 --- a/res/gta5sync_ru.ts +++ b/res/gta5sync_ru.ts @@ -188,27 +188,27 @@ Pictures and Savegames Редактор картинок Snapmatic - + Overwrite Image... Перезаписать картинку... - + Apply changes Применить изменения - + &Overwrite &Перезаписать - + Discard changes Отменить изменения - + &Close &Закрыть @@ -260,9 +260,9 @@ Pictures and Savegames - - - + + + Background Colour: <span style="color: %1">%1</span> Цвет фона: <span style="color: %1">%1</span> @@ -288,8 +288,13 @@ Pictures and Savegames Убрать фоновую картинку - - + + Import as-is, don't change the picture at all, guarantee to break Snapmatic unless you know what you doing + + + + + Background Image: %1 Фоновая картинка: %1 @@ -306,32 +311,62 @@ Pictures and Savegames Задать цвет в зоне аватарки - + + Advanced + + + + + Resolution: + + + + + Snapmatic resolution + + + + + Avoid compression and expand buffer instead, improves picture quality, but may break Snapmatic + + + + + Unlimited Buffer + + + + + Import as-is + + + + Import options Опции импорта - + &Options &Опции - + Import picture Импортировать картинку - + &OK &ОК - + Discard picture Отклонить картинку - + &Cancel Я не уверен насчет горячих клавиш... @@ -339,141 +374,143 @@ Pictures and Savegames - - - + + + Background Image: Фоновая картинка: - + &Import new Picture... &Импортировать картинку... - + &Crop Picture... Об&резать картинку... - + &Load Settings... &Загрузить настройки... - + &Save Settings... &Сохранить настройки... - + Custom Avatar Custom Avatar Description in SC, don't use Special Character! Свой Аватар - + Custom Picture Custom Picture Description in SC, don't use Special Character! Своя Картинка - + Storage Background Image: Storage Хранилище - + Crop Picture... Обрезать картинку... - + &Crop Об&резать - + Crop Picture Обрезать картинку - - + + Please import a new picture first Импортируй сначала новую картинку - - + + Default Default as Default Profile По умолчанию - - - - - - - - - - + + + + - - - - + + + + + + + + + + Profile %1 Profile %1 as Profile 1 Профиль %1 - - + + Load Settings... Загрузить настройки... - - + + Please select your settings profile Пожалуйста, выбери профиль для настроек - - + + Save Settings... Сохранить настройки... - + + 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! Ты точно хочешь использовать квадратное изображение вне зоны аватарки? Если это аватар, то изображение будет обрезано! - + + Snapmatic Avatar Zone Зона Snapmatic Аватарки - + Select Colour... Выбрать цвет... - + File Background Image: File Файл @@ -1311,8 +1348,8 @@ Press 1 for Default View <h4>Нижеследующие картинки Snapmatic были восстановлены</h4>%1 - - + + @@ -1334,12 +1371,12 @@ Press 1 for Default View Импортировать... - - - - - - + + + + + + Import Импортировать @@ -1356,8 +1393,8 @@ Press 1 for Default View Картинка Snapmatic (PGTA*) - - + + All files (**) @@ -1408,22 +1445,22 @@ Press 1 for Default View Файлы для импорта (%1) - - + + All image files (%1) Все файлы изображений (%1) - - + + Can't import %1 because file can't be open Не удалось открыть %1, файл не может быть открыт - - + + Can't import %1 because file can't be parsed properly Не получилось импортировать %1, файл не может быть правильно обработан @@ -2055,7 +2092,7 @@ Press 1 for Default View SnapmaticPicture - + PHOTO - %1 ФОТО - %1 @@ -2065,56 +2102,56 @@ Press 1 for Default View Открыть файл %1 - + header not exists Отсутствует шапка (header) - + header is malformed Шапка (header) повреждена - + picture not exists (%1) Картинки не существует (%1) - + JSON not exists (%1) JSON не существует (%1) - + title not exists (%1) Заголовок отсутствует (%1) - + description not exists (%1) Описание отсутствует (%1) - + reading file %1 because of %2 Example for %2: JSON is malformed error Чтение из файла %1 из-за %2 - + JSON is incomplete and malformed JSON не полный и повреждён - + JSON is incomplete JSON частично отсутствует - + JSON is malformed JSON повреждён diff --git a/res/gta5sync_uk.ts b/res/gta5sync_uk.ts index 091be8c..8ce5730 100644 --- a/res/gta5sync_uk.ts +++ b/res/gta5sync_uk.ts @@ -179,27 +179,27 @@ Pictures and Savegames ImageEditorDialog - + Overwrite Image... Перезаписати зображення... - + Apply changes Застосувати зміни - + &Overwrite &Перезаписати - + Discard changes Скасувати зміни - + &Close &Закрити @@ -259,9 +259,9 @@ Pictures and Savegames - - - + + + Background Colour: <span style="color: %1">%1</span> Фоновий колір: <span style="color: %1">%1</span> @@ -278,9 +278,9 @@ Pictures and Savegames - - - + + + Background Image: Фонове зображення: @@ -305,171 +305,208 @@ Pictures and Savegames Примусовий колір в зоні Аватару - + + Advanced + + + + + Resolution: + + + + + Snapmatic resolution + + + + + Avoid compression and expand buffer instead, improves picture quality, but may break Snapmatic + + + + + Unlimited Buffer + + + + + Import as-is, don't change the picture at all, guarantee to break Snapmatic unless you know what you doing + + + + + Import as-is + + + + Import options Параметри імпорту - + &Options &Параметри - + Import picture Імпортувати зображення - + &OK &OK - + Discard picture Відхилити зображення - + &Cancel &Скасувати - + &Import new Picture... &Імпортувати нове зображення... - + &Crop Picture... &Обрізати зображення... - + &Load Settings... &Завантажити параметри... - + &Save Settings... &Зберегти параметри... - + Custom Avatar Custom Avatar Description in SC, don't use Special Character! Користувацький Аватар - + Custom Picture Custom Picture Description in SC, don't use Special Character! Користувацьке Зображення - + Storage Background Image: Storage Зберігання - + Crop Picture... Обрізати зображення... - + &Crop &Обрізати - + Crop Picture Обрізати зображення - - + + Please import a new picture first Спершу імпортуйте нове зображення - - + + Default Default as Default Profile Стандартний - - - - - - - - - - + + + + - - - - + + + + + + + + + + Profile %1 Profile %1 as Profile 1 Профіль %1 - - + + Load Settings... Завантажити параметри... - - + + Save Settings... Зберегти параметри... - + + Snapmatic Avatar Zone Зона Snapmatic Аватару - + + 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! Ви впевнені, що будете використовувати квадратне зображення поза зоною аватара? Якщо ви хочете використовувати його як Аватар, зображення буде відокремлено! - + Select Colour... Вибір кольору... - - + + Background Image: %1 Фонове зображення: %1 - - + + Please select your settings profile Будь ласка, виберіть свій профіль налаштувань - + File Background Image: File Файл @@ -1294,8 +1331,8 @@ Press 1 for Default View Експортується файл %1 з %2 файлів - - + + @@ -1317,40 +1354,40 @@ Press 1 for Default View Імпортування... - - - - - - + + + + + + Import Імпорт - - + + All image files (%1) Файли зображень (%1) - - + + All files (**) Усі файли (**) - - + + Can't import %1 because file can't be open Неможливо імпортувати %1, оскільки файл не може бути відкритий - - + + Can't import %1 because file can't be parsed properly Неможливо імпортувати %1, оскільки файл неможливо розібрати правильно @@ -2046,24 +2083,24 @@ Press 1 for Default View SnapmaticPicture - + JSON is incomplete and malformed JSON неповний та неправильний - + JSON is incomplete JSON неповний - + JSON is malformed JSON неправильний - + PHOTO - %1 ФОТО - %1 @@ -2073,37 +2110,37 @@ Press 1 for Default View відкрити файл%1 - + header not exists заголовок не існує - + header is malformed заголовок неправильний - + picture not exists (%1) зображення не існує (%1) - + JSON not exists (%1) JSON не існує (%1) - + title not exists (%1) заголовок не існує (%1) - + description not exists (%1) опис не існує (%1) - + reading file %1 because of %2 Example for %2: JSON is malformed error читання файлу %1 тому що %2 diff --git a/res/gta5sync_zh_TW.ts b/res/gta5sync_zh_TW.ts index 2f0a58f..1ed0c36 100644 --- a/res/gta5sync_zh_TW.ts +++ b/res/gta5sync_zh_TW.ts @@ -175,27 +175,27 @@ Pictures and Savegames ImageEditorDialog - + Overwrite Image... 修改圖片... - + Apply changes 套用變更 - + &Overwrite 修改(&O) - + Discard changes 捨棄變更 - + &Close 關閉(&C) @@ -255,9 +255,9 @@ Pictures and Savegames - - - + + + Background Colour: <span style="color: %1">%1</span> 背景顏色: <span style="color: %1">%1</span> @@ -274,9 +274,9 @@ Pictures and Savegames - - - + + + Background Image: 背景圖片: @@ -301,170 +301,207 @@ Pictures and Savegames 強制在大頭貼區域使用顏色 - + + Advanced + + + + + Resolution: + + + + + Snapmatic resolution + + + + + Avoid compression and expand buffer instead, improves picture quality, but may break Snapmatic + + + + + Unlimited Buffer + + + + + Import as-is, don't change the picture at all, guarantee to break Snapmatic unless you know what you doing + + + + + Import as-is + + + + Import options 匯入選項 - + &Options 選項(&O) - + Import picture 匯入圖片 - + &OK 確定(&O) - + Discard picture 捨棄圖片 - + &Cancel 取消(&C) - + &Import new Picture... 匯入新圖片(&I)... - + &Crop Picture... 裁剪圖片(&C)... - + &Load Settings... 載入設定(&L)... - + &Save Settings... 儲存設定(&S)... - + Custom Avatar Custom Avatar Description in SC, don't use Special Character! 自訂大頭貼 - + Custom Picture Custom Picture Description in SC, don't use Special Character! 自訂圖片 - + Storage Background Image: Storage 儲存 - + Crop Picture... 裁剪圖片... - + &Crop 裁剪(&C) - + Crop Picture 裁剪圖片 - - + + Please import a new picture first 請先匯入新圖片 - - + + Default Default as Default Profile 預設 - - - - - - - - - - + + + + - - - - + + + + + + + + + + Profile %1 Profile %1 as Profile 1 設定檔 %1 - - + + Load Settings... 載入設定... - - + + Save Settings... 儲存設定... - + + Snapmatic Avatar Zone Snapmatic 大頭貼區域 - + + 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! 你確定要在大頭貼區域以外的地方使用方形圖片嗎? 作為大頭貼的圖片將被分離! - + Select Colour... 選擇顏色... - - + + Background Image: %1 背景圖片: %1 - - + + Please select your settings profile 請選擇設定檔 - + File Background Image: File 文件 @@ -1288,8 +1325,8 @@ Press 1 for Default View 匯出檔案中 %1 共 %2 個檔案 - - + + @@ -1311,40 +1348,40 @@ Press 1 for Default View 匯入... - - - - - - + + + + + + Import 匯入 - - + + All image files (%1) 所有圖片 (%1) - - + + All files (**) 所有檔案 (**) - - + + Can't import %1 because file can't be open 無法匯入 %1,因為檔案無法開啟 - - + + Can't import %1 because file can't be parsed properly 無法匯入 %1,因為檔案無法正確解析 @@ -2036,24 +2073,24 @@ Press 1 for Default View SnapmaticPicture - + JSON is incomplete and malformed JSON 不完整和異常 - + JSON is incomplete JSON 不完整 - + JSON is malformed JSON 異常 - + PHOTO - %1 照片 - %1 @@ -2063,37 +2100,37 @@ Press 1 for Default View 開啟檔案 - %1 - + header not exists 標頭不存在 - + header is malformed 標頭異常 - + picture not exists (%1) 圖片不存在 (%1) - + JSON not exists (%1) JSON 不存在 (%1) - + title not exists (%1) 標題不存在 (%1) - + description not exists (%1) 描述不存在 (%1) - + reading file %1 because of %2 Example for %2: JSON is malformed error 讀取檔案 %1 失敗,因為 %2