latest changes from gta5sync

This commit is contained in:
Syping 2017-06-05 18:16:17 +02:00
parent ed559f3ce9
commit e0d90ff7d0
19 changed files with 1179 additions and 823 deletions

View file

@ -24,15 +24,15 @@ before_script:
- echo "Grand Theft Auto V Snapmatic and Savegame viewer" > ./description-pak
script:
- qmake -qt=5 "DEFINES+=GTA5SYNC_BUILDTYPE=\\\\\\\"Developer\\\\\\\"" "DEFINES+=GTA5SYNC_DAILYB=\\\\\\\"$PACKAGE_VERSION-dev4\\\\\\\"" ../gta5view.pro
- qmake -qt=5 "DEFINES+=GTA5SYNC_BUILDTYPE=\\\\\\\"Developer\\\\\\\"" "DEFINES+=GTA5SYNC_DAILYB=\\\\\\\"$PACKAGE_VERSION-rc1\\\\\\\"" ../gta5view.pro
- make -j 4
- sudo checkinstall -D --default --nodoc --pkgname=gta5view --pkgversion=$PACKAGE_VERSION --pkgrelease=dev4 --pkggroup=utility --maintainer="Syping on Travis \<travisci@syping.de\>" --requires=libqt5core5a,libqt5gui5,libqt5network5,libqt5widgets5 --pakdir=../package
- sudo checkinstall -D --default --nodoc --pkgname=gta5view --pkgversion=$PACKAGE_VERSION --pkgrelease=rc1 --pkggroup=utility --maintainer="Syping on Travis \<travisci@syping.de\>" --requires=libqt5core5a,libqt5gui5,libqt5network5,libqt5widgets5 --pakdir=../package
deploy:
provider: releases
api_key:
secure: "o7VneEz1aHfdVwZvOZLfopf6uJWNrFsZaBvunTmXFzpmNFhlNS1qwqgMUkIA2yBRbZ3wIzVs4vfwIHv7W9yE/PqK+AYL+R8+AwKGrwlgT4HqJNuk6VM/LNJ6GwT/qkQuaoOVw29bUjmzzgIRdHmw53SlJv6Hh1VE8HphlTT//aex6nCfcFhUZ0BETdZDWz5FSHwL3NalUoqfKfQrJeky5RXzCyCANQC2tKt0bV46GaWIgWrDo2KCTNqPtRWWf5GDmnkXE5IYRMQ3mXvO9iYh0v5Y2jo4PiXGUiFUU6Z3aAWFAiPdGclrBO697cf3lCTzDMhuCETR153qFYsLShUlFf61ITAmCeHAWETjZDri0lmPONo3GoNB6alGfYEA51qw14kXakrTpICtTJj7gw/gtUYOabW6hrzmieNzMBIy62RikDPjyakFnuwW2qNHRlD65e0jYv+6nCpb6E+OV16Ysh1zhV2vTfpfzVmSuyu2J+ELqXD3OZCXRSPpDIih9UQ8335p8FBji6jHORcgym/TRgdgRmENibh8tLzWp+UjpWHuWfcpvZgOskjfwU0iDMCayMJ7tDpOhXHcAhDRnd6XRIiOJ5YZCzflj2nEwmt3YUd7DwXS/AU+WHOmcNQBjXBxF/FJa35XXcy3HKJM5TTKqtph3medo30us5yXHeG6NNg="
file: "../package/gta5view_$PACKAGE_VERSION-dev4_amd64.deb"
file: "../package/gta5view_$PACKAGE_VERSION-rc1_amd64.deb"
skip_cleanup: true
on:
tags: true

View file

@ -35,17 +35,67 @@ AboutDialog::AboutDialog(QWidget *parent) :
buildType.replace("_", " ");
QString projectBuild = GTA5SYNC_BUILDDATETIME;
QString buildStr = GTA5SYNC_BUILDSTRING;
#ifdef GTA5SYNC_ENABLED
QString projectDes = tr("A project for viewing and sync Grand Theft Auto V Snapmatic<br/>\nPictures and Savegames");
// Additional Content
QString usingStr = tr("Using %1 %2", "Exp. Using libmyfuck");
QString translatedByStr = tr("Translated by %1", "Exp. Translated by Syping");
QString translatedByVal = tr("NAME_OF_TRANSLATOR", "Your Name (The person behind your screen looking at this text!)");
QString translatorProfile = tr("TRANSLATOR_PROFILE", "mailto: http:// https:// Exp. https://github.com/Syping/");
QString additionalContent = "";
if (translatedByVal != "NAME_OF_TRANSLATOR")
{
if (translatorProfile != "TRANSLATOR_PROFILE")
{
additionalContent.append(translatedByStr.arg(QString("<a href=\"%1\">%2</a>").arg(translatorProfile, translatedByVal)));
}
else
{
additionalContent.append(translatedByStr.arg(translatedByVal));
}
}
#ifdef WITH_LIBJPEGTURBO // DONT USE IT FOR NOW
bool additionalContentClip = false;
if (!additionalContent.isEmpty())
{
additionalContentClip = true;
additionalContent.append(" (");
}
additionalContent.append(usingStr.arg("libjpegturbo", WITH_LIBJPEGTURBO));
if (additionalContentClip)
{
additionalContent.append(")");
}
#else
QString projectDes = tr("A project for viewing Grand Theft Auto V Snapmatic<br/>\nPictures and Savegames");
Q_UNUSED(usingStr)
#endif
// Project Description
#ifdef GTA5SYNC_ENABLED
QString projectDes = tr("A project for viewing and sync Grand Theft Auto V Snapmatic<br/>\nPictures and Savegames");
#else
QString projectDes = tr("A project for viewing Grand Theft Auto V Snapmatic<br/>\nPictures and Savegames");
#endif
// Copyright Description
QString copyrightDes1 = tr("Copyright &copy; <a href=\"%1\">%2</a> %3");
copyrightDes1 = copyrightDes1.arg(GTA5SYNC_APPVENDORLINK, GTA5SYNC_APPVENDOR, GTA5SYNC_COPYRIGHT);
QString copyrightDes2 = tr("%1 is licensed under <a href=\"https://www.gnu.org/licenses/gpl-3.0.html#content\">GNU GPLv3</a>");
copyrightDes2 = copyrightDes2.arg(GTA5SYNC_APPSTR);
QString copyrightDesA;
if (!additionalContent.isEmpty())
{
copyrightDesA = copyrightDes1 % "<br/>" % additionalContent % "<br/>" % copyrightDes2;
}
else
{
copyrightDesA = copyrightDes1 % "<br/>" % copyrightDes2;
}
// Setup User Interface
ui->setupUi(this);
aboutStr = ui->labAbout->text();
titleStr = this->windowTitle();
ui->labAbout->setText(aboutStr.arg(appVersion % " (" % buildType % ")", buildStr, qVersion(), projectBuild, GTA5SYNC_APPVENDORLINK, GTA5SYNC_APPVENDOR, GTA5SYNC_COPYRIGHT, GTA5SYNC_APPSTR, projectDes));
ui->labAbout->setText(aboutStr.arg(GTA5SYNC_APPSTR, projectDes, appVersion % " (" % buildType % ")", projectBuild, buildStr, qVersion(), copyrightDesA));
this->setWindowTitle(titleStr.arg(GTA5SYNC_APPSTR));
if (QIcon::hasThemeIcon("dialog-close"))
@ -55,7 +105,14 @@ AboutDialog::AboutDialog(QWidget *parent) :
// DPI calculation
qreal screenRatio = AppEnv::screenRatio();
resize(375 * screenRatio, 260 * screenRatio);
if (!additionalContent.isEmpty())
{
resize(375 * screenRatio, 270 * screenRatio);
}
else
{
resize(375 * screenRatio, 260 * screenRatio);
}
}
AboutDialog::~AboutDialog()

View file

@ -26,16 +26,16 @@
</sizepolicy>
</property>
<property name="text">
<string>&lt;span style=&quot; font-weight:600;&quot;&gt;%8&lt;/span&gt;&lt;br/&gt;
<string>&lt;span style=&quot; font-weight:600;&quot;&gt;%1&lt;/span&gt;&lt;br/&gt;
&lt;br/&gt;
%9&lt;br/&gt;
%2&lt;br/&gt;
&lt;br/&gt;
Project version: %1&lt;br/&gt;
Project build: %4&lt;br/&gt;
Compiled with Qt %2&lt;br/&gt;
Running with Qt %3&lt;br/&gt;
Version %3&lt;br/&gt;
Created on %4&lt;br/&gt;
Built with Qt %5&lt;br/&gt;
Running with Qt %6&lt;br/&gt;
&lt;br/&gt;
Copyright &amp;copy; &lt;a href=&quot;%5&quot;&gt;%6&lt;/a&gt; %7&lt;br/&gt;%8 is licensed under &lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0.html#content&quot;&gt;GNU GPLv3&lt;/a&gt;</string>
%7</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>

View file

@ -518,27 +518,32 @@ void PictureDialog::renderPicture()
{
if (overlayEnabled)
{
QPixmap overlayAreaPixmap(960 * screenRatio, 536 * screenRatio);
overlayAreaPixmap.fill(Qt::transparent);
QPainter overlayAreaPainter(&overlayAreaPixmap);
QPixmap shownImagePixmap(960 * screenRatio, 536 * screenRatio);
shownImagePixmap.fill(Qt::transparent);
QPainter shownImagePainter(&shownImagePixmap);
if (screenRatio == 1)
{
overlayAreaPainter.drawImage(0, 0, snapmaticPicture);
overlayAreaPainter.drawImage(3 * screenRatio, 3 * screenRatio, overlayTempImage);
shownImagePainter.drawImage(0, 0, snapmaticPicture);
shownImagePainter.drawImage(3 * screenRatio, 3 * screenRatio, overlayTempImage);
}
else
{
overlayAreaPainter.drawImage(0, 0, snapmaticPicture.scaledToHeight(536 * screenRatio, Qt::SmoothTransformation));
overlayAreaPainter.drawImage(3 * screenRatio, 3 * screenRatio, overlayTempImage);
shownImagePainter.drawImage(0, 0, snapmaticPicture.scaledToHeight(536 * screenRatio, Qt::SmoothTransformation));
shownImagePainter.drawImage(3 * screenRatio, 3 * screenRatio, overlayTempImage);
}
overlayAreaPainter.end();
ui->labPicture->setPixmap(overlayAreaPixmap);
shownImagePainter.end();
ui->labPicture->setPixmap(shownImagePixmap);
}
else
{
if (screenRatio != 1)
{
ui->labPicture->setPixmap(QPixmap::fromImage(snapmaticPicture.scaledToHeight(536 * screenRatio, Qt::SmoothTransformation)));
QPixmap shownImagePixmap(960 * screenRatio, 536 * screenRatio);
shownImagePixmap.fill(Qt::transparent);
QPainter shownImagePainter(&shownImagePixmap);
shownImagePainter.drawImage(0, 0, snapmaticPicture.scaledToHeight(536 * screenRatio, Qt::SmoothTransformation));
shownImagePainter.end();
ui->labPicture->setPixmap(shownImagePixmap);
}
else
{

View file

@ -502,7 +502,7 @@ bool ProfileInterface::importFile(QString selectedFile, bool notMultiple, int cu
if (selectedFileName.left(4) == "PGTA" || selectedFileName.right(4) == ".g5e")
{
SnapmaticPicture *picture = new SnapmaticPicture(selectedFile);
if (picture->readingPicture())
if (picture->readingPicture(true, true, true))
{
bool success = importSnapmaticPicture(picture, notMultiple);
if (!success) delete picture;
@ -534,7 +534,7 @@ bool ProfileInterface::importFile(QString selectedFile, bool notMultiple, int cu
else if(selectedFileName.right(4) == ".jpg" || selectedFileName.right(4) == ".png")
{
SnapmaticPicture *picture = new SnapmaticPicture(":/template/template.g5e");
if (picture->readingPicture(true, false))
if (picture->readingPicture(true, false, true, false))
{
if (!notMultiple)
{

View file

@ -1,5 +1,5 @@
/*****************************************************************************
* gta5sync GRAND THEFT AUTO V SYNC
* gta5sync-spv Grand Theft Auto Snapmatic Picture Viewer
* Copyright (C) 2016-2017 Syping
*
* This program is free software: you can redistribute it and/or modify
@ -75,6 +75,7 @@ void SnapmaticPicture::reset()
isCustomFormat = 0;
pictureHead = "";
pictureStr = "";
lowRamMode = 0;
lastStep = "";
sortStr = "";
titlStr = "";
@ -89,7 +90,7 @@ void SnapmaticPicture::reset()
localSpJson = {};
}
bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bool fastLoad)
bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bool fastLoad, bool lowRamMode_)
{
// Start opening file
// lastStep is like currentStep
@ -97,6 +98,8 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo
// Set boolean values
writeEnabled = writeEnabled_;
cacheEnabled = cacheEnabled_;
lowRamMode = lowRamMode_;
if (!writeEnabled) { lowRamMode = false; } // Low RAM Mode only works when writeEnabled is true
QFile *picFile = new QFile(picFilePath);
picFileName = QFileInfo(picFilePath).fileName();
@ -225,14 +228,14 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo
return false;
}
QByteArray jpegRawContent = picStream->read(jpegPicStreamLength);
if (jpegRawContent.contains(QByteArray::fromHex("FFD9")))
if (jpegRawContent.contains("\xFF\xD9"))
{
int jpegRawContentSizeT = jpegRawContent.indexOf(QByteArray::fromHex("FFD9")) + 2;
int jpegRawContentSizeT = jpegRawContent.indexOf("\xFF\xD9") + 2;
jpegRawContentSizeE = jpegRawContentSizeT;
jpegRawContentSize = jpegRawContentSizeT;
if (jpegRawContent.contains(QByteArray::fromHex("FF454F49")))
if (jpegRawContent.contains("\xFF\x45\x4F\x49"))
{
jpegRawContentSizeT = jpegRawContent.indexOf(QByteArray::fromHex("FF454F49"));
jpegRawContentSizeT = jpegRawContent.indexOf("\xFF\x45\x4F\x49");
}
jpegRawContent = jpegRawContent.left(jpegRawContentSize);
jpegRawContentSize = jpegRawContentSizeT;
@ -317,13 +320,14 @@ bool SnapmaticPicture::readingPicture(bool writeEnabled_, bool cacheEnabled_, bo
picStream->close();
delete picStream;
if (!writeEnabled) { rawPicContent.clear(); }
else if (lowRamMode) { rawPicContent = qCompress(rawPicContent, 9); }
return picOk;
}
QString SnapmaticPicture::getSnapmaticHeaderString(const QByteArray &snapmaticHeader)
{
QByteArray snapmaticBytes = snapmaticHeader.left(snapmaticUsefulLength);
QList<QByteArray> snapmaticBytesList = snapmaticBytes.split(char(0x01));
QList<QByteArray> snapmaticBytesList = snapmaticBytes.split('\x01');
snapmaticBytes = snapmaticBytesList.at(1);
snapmaticBytesList.clear();
return StringParser::parseTitleString(snapmaticBytes, snapmaticBytes.length());
@ -332,8 +336,8 @@ QString SnapmaticPicture::getSnapmaticHeaderString(const QByteArray &snapmaticHe
QString SnapmaticPicture::getSnapmaticJSONString(const QByteArray &jsonBytes)
{
QByteArray jsonUsefulBytes = jsonBytes;
jsonUsefulBytes.replace((char)0x00, "");
jsonUsefulBytes.replace((char)0x0c, "");
jsonUsefulBytes.replace('\x00', "");
jsonUsefulBytes.replace('\x0c', "");
return QString::fromUtf8(jsonUsefulBytes).trimmed();
}
@ -341,7 +345,7 @@ QString SnapmaticPicture::getSnapmaticTIDEString(const QByteArray &tideBytes)
{
QByteArray tideUsefulBytes = tideBytes;
tideUsefulBytes.remove(0,4);
QList<QByteArray> tideUsefulBytesList = tideUsefulBytes.split(char(0x00));
QList<QByteArray> tideUsefulBytesList = tideUsefulBytes.split('\x00');
return QString::fromUtf8(tideUsefulBytesList.at(0)).trimmed();
}
@ -365,12 +369,12 @@ void SnapmaticPicture::updateStrings()
picExportFileName = sortStr + "_" + cmpPicTitl;
}
bool SnapmaticPicture::readingPictureFromFile(const QString &fileName, bool writeEnabled_, bool cacheEnabled_, bool fastLoad)
bool SnapmaticPicture::readingPictureFromFile(const QString &fileName, bool writeEnabled_, bool cacheEnabled_, bool fastLoad, bool lowRamMode_)
{
if (fileName != "")
{
picFilePath = fileName;
return readingPicture(writeEnabled_, cacheEnabled_, fastLoad);
return readingPicture(writeEnabled_, cacheEnabled_, fastLoad, lowRamMode_);
}
else
{
@ -414,25 +418,27 @@ bool SnapmaticPicture::setPictureStream(const QByteArray &picByteArray_) // clea
{
if (writeEnabled)
{
bool lvlEoi = false;
bool customEOI = false;
QByteArray picByteArray = picByteArray_;
if (lowRamMode) { rawPicContent = qUncompress(rawPicContent); }
QBuffer snapmaticStream(&rawPicContent);
snapmaticStream.open(QIODevice::ReadWrite);
if (!snapmaticStream.seek(jpegStreamEditorBegin)) return false;
if (picByteArray.length() > jpegPicStreamLength) return false;
if (picByteArray.length() < jpegRawContentSize && jpegRawContentSize + 4 < jpegPicStreamLength)
{
lvlEoi = true;
customEOI = true;
}
while (picByteArray.length() != jpegPicStreamLength)
{
picByteArray.append((char)0x00);
picByteArray += '\x00';
}
if (lvlEoi)
if (customEOI)
{
picByteArray.replace(jpegRawContentSize, 4, QByteArray::fromHex("FF454F49"));
picByteArray.replace(jpegRawContentSize, 4, "\xFF\x45\x4F\x49");
}
int result = snapmaticStream.write(picByteArray);
snapmaticStream.close();
if (result != 0)
{
if (cacheEnabled)
@ -441,8 +447,10 @@ bool SnapmaticPicture::setPictureStream(const QByteArray &picByteArray_) // clea
replacedPicture.loadFromData(picByteArray);
cachePicture = replacedPicture;
}
if (lowRamMode) { rawPicContent = qCompress(rawPicContent, 9); }
return true;
}
if (lowRamMode) { rawPicContent = qCompress(rawPicContent, 9); }
return false;
}
return false;
@ -453,6 +461,7 @@ bool SnapmaticPicture::setPictureTitl(const QString &newTitle_)
if (writeEnabled)
{
QString newTitle = newTitle_;
if (lowRamMode) { rawPicContent = qUncompress(rawPicContent); }
QBuffer snapmaticStream(&rawPicContent);
snapmaticStream.open(QIODevice::ReadWrite);
if (!snapmaticStream.seek(titlStreamEditorBegin)) return false;
@ -463,14 +472,17 @@ bool SnapmaticPicture::setPictureTitl(const QString &newTitle_)
QByteArray newTitleArray = newTitle.toUtf8();
while (newTitleArray.length() != titlStreamEditorLength)
{
newTitleArray.append((char)0x00);
newTitleArray += '\x00';
}
int result = snapmaticStream.write(newTitleArray);
snapmaticStream.close();
if (result != 0)
{
titlStr = newTitle;
if (lowRamMode) { rawPicContent = qCompress(rawPicContent, 9); }
return true;
}
if (lowRamMode) { rawPicContent = qCompress(rawPicContent, 9); }
return false;
}
return false;
@ -533,6 +545,7 @@ QImage SnapmaticPicture::getImage()
QImage tempPicture;
QImage returnPicture(snapmaticResolution, QImage::Format_RGB888);
if (lowRamMode) { rawPicContent = qUncompress(rawPicContent); }
QBuffer snapmaticStream(&rawPicContent);
snapmaticStream.open(QIODevice::ReadOnly);
if (snapmaticStream.seek(jpegStreamEditorBegin))
@ -541,6 +554,7 @@ QImage SnapmaticPicture::getImage()
returnOk = tempPicture.loadFromData(jpegRawContent, "JPEG");
}
snapmaticStream.close();
if (lowRamMode) { rawPicContent = qCompress(rawPicContent, 9); }
if (returnOk)
{
@ -722,8 +736,9 @@ bool SnapmaticPicture::setSnapmaticProperties(SnapmaticProperties newSpJson)
QByteArray jsonByteArray = newJsonStr.toUtf8();
while (jsonByteArray.length() != jsonStreamEditorLength)
{
jsonByteArray.append((char)0x00);
jsonByteArray += '\x00';
}
if (lowRamMode) { rawPicContent = qUncompress(rawPicContent); }
QBuffer snapmaticStream(&rawPicContent);
snapmaticStream.open(QIODevice::ReadWrite);
if (!snapmaticStream.seek(jsonStreamEditorBegin))
@ -737,8 +752,14 @@ bool SnapmaticPicture::setSnapmaticProperties(SnapmaticProperties newSpJson)
{
localSpJson = newSpJson;
jsonStr = newJsonStr;
if (lowRamMode) { rawPicContent = qCompress(rawPicContent, 9); }
return true;
}
else
{
if (lowRamMode) { rawPicContent = qCompress(rawPicContent, 9); }
return false;
}
}
else
{
@ -773,15 +794,24 @@ bool SnapmaticPicture::exportPicture(const QString &fileName, const QString form
{
numberLength = "00";
}
picFile->write(QByteArray::fromHex("00")); // First Null Byte
picFile->write("G5E"); // GTA 5 Export
picFile->write(QByteArray::fromHex("1000")); // 2 byte GTA 5 Export Version
picFile->write("LEN"); // Before Length
picFile->write(QByteArray::fromHex(numberLength)); // Length in HEX before Compressed
picFile->write("FIL"); // Before File Name
picFile->write(stockFileNameUTF8); // File Name
picFile->write("COM"); // Before Compressed
picFile->write(qCompress(rawPicContent, 9)); // Compressed Snapmatic
QByteArray g5eHeader;
g5eHeader += '\x00'; // First Null Byte
g5eHeader += "G5E"; // GTA 5 Export
g5eHeader += '\x10'; g5eHeader += '\x00'; // 2 byte GTA 5 Export Version
g5eHeader += "LEN"; // Before Length
g5eHeader += QByteArray::fromHex(numberLength); // Length in HEX before Compressed
g5eHeader += "FIL"; // Before File Name
g5eHeader += stockFileNameUTF8; // File Name
g5eHeader += "COM"; // Before Compressed
picFile->write(g5eHeader);
if (!lowRamMode)
{
picFile->write(qCompress(rawPicContent, 9)); // Compressed Snapmatic
}
else
{
picFile->write(rawPicContent);
}
picFile->close();
delete picFile;
}
@ -805,7 +835,14 @@ bool SnapmaticPicture::exportPicture(const QString &fileName, const QString form
else
{
// Classic straight export
picFile->write(rawPicContent);
if (!lowRamMode)
{
picFile->write(rawPicContent);
}
else
{
picFile->write(qUncompress(rawPicContent));
}
picFile->close();
delete picFile;
}

View file

@ -1,5 +1,5 @@
/*****************************************************************************
* gta5sync GRAND THEFT AUTO V SYNC
* gta5sync-spv Grand Theft Auto Snapmatic Picture Viewer
* Copyright (C) 2016-2017 Syping
*
* This program is free software: you can redistribute it and/or modify
@ -53,8 +53,8 @@ public:
explicit SnapmaticPicture(const QString &fileName = "", QObject *parent = 0);
~SnapmaticPicture();
void reset();
bool readingPictureFromFile(const QString &fileName, bool writeEnabled = true, bool cacheEnabled = false, bool fastLoad = false);
bool readingPicture(bool writeEnabled = true, bool cacheEnabled = true, bool fastLoad = false);
bool readingPictureFromFile(const QString &fileName, bool writeEnabled = true, bool cacheEnabled = false, bool fastLoad = true, bool lowRamMode = false);
bool readingPicture(bool writeEnabled = true, bool cacheEnabled = false, bool fastLoad = true, bool lowRamMode = false);
bool isPicOk();
void clearCache();
QImage getImage();
@ -118,6 +118,7 @@ private:
QString titlStr;
QString descStr;
bool picOk;
bool lowRamMode;
bool writeEnabled;
bool cacheEnabled;
bool isCustomFormat;

View file

@ -50,14 +50,14 @@
#ifndef GTA5SYNC_APPVER
#ifndef GTA5SYNC_DAILYB
#define GTA5SYNC_APPVER "1.4.0-dev4"
#define GTA5SYNC_APPVER "1.4.0-rc1"
#else
#define GTA5SYNC_APPVER QString("%1").arg(GTA5SYNC_DAILYB)
#endif
#endif
#ifndef GTA5SYNC_BUILDTYPE
#define GTA5SYNC_BUILDTYPE "Developer"
#define GTA5SYNC_BUILDTYPE "Release Candidate"
#endif
#ifndef GTA5SYNC_SHARE

View file

@ -107,20 +107,18 @@ FORMS += \
TRANSLATIONS += \
res/gta5sync_de.ts \
res/gta5sync_fr.ts \
lang/gta5sync_ru.ts
res/gta5sync_ru.ts
RESOURCES += \
res/app.qrc
DISTFILES += res/app.rc \
res/gta5view.desktop \
res/gta5sync.desktop \
res/gta5sync_de.ts \
res/gta5sync_fr.ts \
res/gta5view.exe.manifest \
res/gta5view.png \
lang/qtbase_ru.qm \
lang/gta5sync_ru.ts \
lang/qt_ru.qm \
res/gta5sync_ru.ts \
res/gta5sync.exe.manifest \
res/gta5sync.png \
lang/README.txt
INCLUDEPATH += ./uimod

Binary file not shown.

View file

@ -7,8 +7,8 @@ CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "gta5view.exe.manifest"
#include <windows.h>
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1, 4, 0, 4
PRODUCTVERSION 1, 4, 0, 4
FILEVERSION 1, 4, 0, 5
PRODUCTVERSION 1, 4, 0, 5
FILEFLAGSMASK 0x3fL
FILEFLAGS 0
FILEOS VOS_NT_WINDOWS32
@ -25,12 +25,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Syping"
VALUE "FileDescription", "gta5view\0"
VALUE "FileVersion", "1.4.0-dev4\0"
VALUE "FileVersion", "1.4.0-rc1\0"
VALUE "InternalName", "gta5view\0"
VALUE "LegalCopyright", "Copyright © 2016-2017 Syping\0"
VALUE "OriginalFilename", "gta5view.exe\0"
VALUE "ProductName", "gta5view\0"
VALUE "ProductVersion", "1.4.0-dev4\0"
VALUE "ProductVersion", "1.4.0-rc1\0"
END
END
END

Binary file not shown.

View file

@ -60,6 +60,50 @@ Copyright &amp;copy; &lt;a href=&quot;https://github.com/Syping/&quot;&gt;Syping
</message>
<message>
<location filename="../AboutDialog.ui" line="29"/>
<source>&lt;span style=&quot; font-weight:600;&quot;&gt;%1&lt;/span&gt;&lt;br/&gt;
&lt;br/&gt;
%2&lt;br/&gt;
&lt;br/&gt;
Version %3&lt;br/&gt;
Created on %4&lt;br/&gt;
Built with Qt %5&lt;br/&gt;
Running with Qt %6&lt;br/&gt;
&lt;br/&gt;
%7</source>
<translation>&lt;span style=&quot; font-weight:600;&quot;&gt;%1&lt;/span&gt;&lt;br/&gt;
&lt;br/&gt;
%2&lt;br/&gt;
&lt;br/&gt;
Version %3&lt;br/&gt;
Erstellt am %4&lt;br/&gt;
Gebaut mit Qt %5&lt;br/&gt;
Läuft auf Qt %6&lt;br/&gt;
&lt;br/&gt;
%7</translation>
</message>
<message>
<source>&lt;span style=&quot; font-weight:600;&quot;&gt;%1&lt;/span&gt;&lt;br/&gt;
&lt;br/&gt;
%2&lt;br/&gt;
&lt;br/&gt;
Version %3&lt;br/&gt;
Created on %4&lt;br/&gt;
Built with Qt %5&lt;br/&gt;
Running with Qt %6&lt;br/&gt;
%8&lt;br/&gt;
%7</source>
<translation type="vanished">&lt;span style=&quot; font-weight:600;&quot;&gt;%1&lt;/span&gt;&lt;br/&gt;
&lt;br/&gt;
%2&lt;br/&gt;
&lt;br/&gt;
Version %3&lt;br/&gt;
Erstellt am %4&lt;br/&gt;
Gebaut mit Qt %5&lt;br/&gt;
Läuft auf Qt %6&lt;br/&gt;
%8&lt;br/&gt;
%7</translation>
</message>
<message>
<source>&lt;span style=&quot; font-weight:600;&quot;&gt;%8&lt;/span&gt;&lt;br/&gt;
&lt;br/&gt;
%9&lt;br/&gt;
@ -70,7 +114,7 @@ Compiled with Qt %2&lt;br/&gt;
Running with Qt %3&lt;br/&gt;
&lt;br/&gt;
Copyright &amp;copy; &lt;a href=&quot;%5&quot;&gt;%6&lt;/a&gt; %7&lt;br/&gt;%8 is licensed under &lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0.html#content&quot;&gt;GNU GPLv3&lt;/a&gt;</source>
<translation>&lt;span style=&quot; font-weight:600;&quot;&gt;%8&lt;/span&gt;&lt;br/&gt;
<translation type="vanished">&lt;span style=&quot; font-weight:600;&quot;&gt;%8&lt;/span&gt;&lt;br/&gt;
&lt;br/&gt;
%9&lt;br/&gt;
&lt;br/&gt;
@ -102,15 +146,61 @@ Copyright &amp;copy; &lt;a href=&quot;%5&quot;&gt;%6&lt;/a&gt; %7&lt;br/&gt;%8 i
<source>&lt;span style=&quot; font-weight:600;&quot;&gt;gta5sync&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;A project for viewing and sync Grand Theft Auto 5 Snapmatic Pictures and Savegames&lt;br/&gt;&lt;br/&gt;Project version: %1&lt;br/&gt;Compiled with Qt %2&lt;br/&gt;Running with Qt %3&lt;br/&gt;&lt;br/&gt;Copyright &amp;copy; &lt;a href=&quot;https://github.com/Syping/&quot;&gt;Syping&lt;/a&gt; 2016&lt;br/&gt;gta5sync is licensed under &lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0.html#content&quot;&gt;GNU GPLv3&lt;/a&gt;</source>
<translation type="obsolete">&lt;span style=&quot; font-weight:600;&quot;&gt;gta5sync&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;Ein Projekt zum ansehen und synchronisieren von Grand Theft Auto 5 Snapmatic Bilder und Spielständen&lt;br/&gt;&lt;br/&gt;Projektversion: %1&lt;br/&gt;Gebaut mit Qt %2&lt;br/&gt;Läuft auf Qt %3&lt;br/&gt;&lt;br/&gt;Copyright &amp;copy; &lt;a href=&quot;https://github.com/Syping/&quot;&gt;Syping&lt;/a&gt; 2016&lt;br/&gt;gta5sync is lizenziert unter &lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0.html#content&quot;&gt;GNU GPLv3&lt;/a&gt;</translation>
</message>
<message>
<source>Using %1 %2</source>
<translation type="vanished">Verwendet %1 %2</translation>
</message>
<message>
<source>Translated by %1</source>
<translation type="vanished">Übersetzt von %1</translation>
</message>
<message>
<location filename="../AboutDialog.cpp" line="40"/>
<source>Using %1 %2</source>
<comment>Exp. Using libmyfuck</comment>
<translation>Verwendet %1 %2</translation>
</message>
<message>
<location filename="../AboutDialog.cpp" line="41"/>
<source>Translated by %1</source>
<comment>Exp. Translated by Syping</comment>
<translation>Übersetzt von %1</translation>
</message>
<message>
<location filename="../AboutDialog.cpp" line="42"/>
<source>NAME_OF_TRANSLATOR</source>
<comment>Your Name (The person behind your screen looking at this text!)</comment>
<translation>Syping</translation>
</message>
<message>
<location filename="../AboutDialog.cpp" line="43"/>
<source>TRANSLATOR_PROFILE</source>
<comment>mailto: http:// https:// Exp. https://github.com/Syping/</comment>
<translation>https://github.com/Syping/</translation>
</message>
<message>
<location filename="../AboutDialog.cpp" line="64"/>
<source>A project for viewing Grand Theft Auto V Snapmatic&lt;br/&gt;
Pictures and Savegames</source>
<translation>Ein Projekt zum ansehen von Grand Theft Auto V&lt;br/&gt;
Snapmatic Bilder und Spielständen</translation>
</message>
<message>
<location filename="../AboutDialog.cpp" line="38"/>
<location filename="../AboutDialog.cpp" line="68"/>
<source>Copyright &amp;copy; &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; %3</source>
<translation>Copyright &amp;copy; &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; %3</translation>
</message>
<message>
<location filename="../AboutDialog.cpp" line="70"/>
<source>%1 is licensed under &lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0.html#content&quot;&gt;GNU GPLv3&lt;/a&gt;</source>
<translation>%1 ist lizenziert unter &lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0.html#content&quot;&gt;GNU GPLv3&lt;/a&gt;</translation>
</message>
<message>
<source>Copyright &amp;copy; &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; %3&lt;br/&gt;%4 is licensed under &lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0.html#content&quot;&gt;GNU GPLv3&lt;/a&gt;</source>
<translation type="vanished">Copyright &amp;copy; &lt;a href=&quot;%1&quot;&gt;%2&lt;/a&gt; %3&lt;br/&gt;%4 ist lizenziert unter &lt;a href=&quot;https://www.gnu.org/licenses/gpl-3.0.html#content&quot;&gt;GNU GPLv3&lt;/a&gt;</translation>
</message>
<message>
<location filename="../AboutDialog.cpp" line="62"/>
<source>A project for viewing and sync Grand Theft Auto V Snapmatic&lt;br/&gt;
Pictures and Savegames</source>
<translation>Ein Projekt zum ansehen und synchronisieren von&lt;br/&gt;
@ -435,26 +525,26 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen</translation>
<translation type="obsolete">%1 (%2 wenn verfügbar) [sys]</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="129"/>
<location filename="../OptionsDialog.cpp" line="133"/>
<source>System</source>
<comment>System like PC System</comment>
<translation>System</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="129"/>
<location filename="../OptionsDialog.cpp" line="133"/>
<source>%1 (%2 if available)</source>
<comment>System like PC System = %1, System Language like Deutsch = %2</comment>
<translation>%1 (%2 wenn verfügbar)</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="288"/>
<location filename="../OptionsDialog.cpp" line="292"/>
<location filename="../OptionsDialog.cpp" line="296"/>
<source>%1</source>
<comment>%1</comment>
<translation>%1</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="288"/>
<location filename="../OptionsDialog.cpp" line="292"/>
<source>The new Custom Folder will initialize after you restart %1.</source>
<translation>Der eigene Ordner wird initialisiert sobald du %1 neugestartet hast.</translation>
</message>
@ -463,20 +553,20 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen</translation>
<translation type="vanished">Der eigene Ordner initialisiert sobald du %1 neugestartet hast.</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="292"/>
<location filename="../OptionsDialog.cpp" line="296"/>
<source>The language change will take effect after you restart %1.</source>
<translation>Die Änderung der Sprache nimmt Effekt sobald du %1 neugestartet hast.</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="302"/>
<location filename="../OptionsDialog.cpp" line="306"/>
<source>No Profile</source>
<comment>No Profile, as default</comment>
<translation>Kein Profil</translation>
</message>
<message>
<location filename="../OptionsDialog.cpp" line="310"/>
<location filename="../OptionsDialog.cpp" line="314"/>
<location filename="../OptionsDialog.cpp" line="316"/>
<location filename="../OptionsDialog.cpp" line="318"/>
<location filename="../OptionsDialog.cpp" line="320"/>
<source>Profile: %1</source>
<translation>Profil: %1</translation>
</message>
@ -573,17 +663,17 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen</translation>
<translation>Schließen</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="132"/>
<location filename="../PictureDialog.cpp" line="141"/>
<source>Export as &amp;JPG picture...</source>
<translation>Exportiere als &amp;JPG Bild...</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="133"/>
<location filename="../PictureDialog.cpp" line="142"/>
<source>Export as &amp;GTA Snapmatic...</source>
<translation>Exportiere als &amp;GTA Snapmatic...</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="347"/>
<location filename="../PictureDialog.cpp" line="358"/>
<source>Key 1 - Avatar Preview Mode
Key 2 - Toggle Overlay
Arrow Keys - Navigate</source>
@ -592,19 +682,19 @@ Taste 2 - Overlay umschalten
Pfeiltasten - Navigieren</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="406"/>
<location filename="../PictureDialog.cpp" line="478"/>
<location filename="../PictureDialog.cpp" line="417"/>
<location filename="../PictureDialog.cpp" line="489"/>
<source>Snapmatic Picture Viewer</source>
<translation>Snapmatic Bildansicht</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="406"/>
<location filename="../PictureDialog.cpp" line="478"/>
<location filename="../PictureDialog.cpp" line="417"/>
<location filename="../PictureDialog.cpp" line="489"/>
<source>Failed at %1</source>
<translation>Fehlgeschlagen bei %1</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="533"/>
<location filename="../PictureDialog.cpp" line="572"/>
<source>Avatar Preview Mode
Press 1 for Default View</source>
<translation>Avatar Vorschaumodus
@ -641,19 +731,19 @@ Drücke A für Standardansicht</translation>
<translation type="vanished">Avatar Vorschaumodus&lt;br&gt;Drücke A für Standardansicht</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="467"/>
<location filename="../PictureDialog.cpp" line="477"/>
<location filename="../PictureDialog.cpp" line="478"/>
<location filename="../PictureDialog.cpp" line="488"/>
<source>No player</source>
<translation>Keine Spieler</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="470"/>
<location filename="../PictureDialog.cpp" line="477"/>
<location filename="../PictureDialog.cpp" line="481"/>
<location filename="../PictureDialog.cpp" line="488"/>
<source>No crew</source>
<translation>Keine Crew</translation>
</message>
<message>
<location filename="../PictureDialog.cpp" line="477"/>
<location filename="../PictureDialog.cpp" line="488"/>
<source>Unknown Location</source>
<translation>Unbekannter Standort</translation>
</message>
@ -800,27 +890,27 @@ Drücke A für Standardansicht</translation>
<translation>Lade Datei %1 von %2 Dateien</translation>
</message>
<message>
<location filename="../ProfileInterface.ui" line="166"/>
<location filename="../ProfileInterface.ui" line="169"/>
<source>%1 %2</source>
<translation>%1 %2</translation>
</message>
<message>
<location filename="../ProfileInterface.ui" line="192"/>
<location filename="../ProfileInterface.ui" line="195"/>
<source>Import exported file</source>
<translation>Importiere exportierte Datei</translation>
</message>
<message>
<location filename="../ProfileInterface.ui" line="195"/>
<location filename="../ProfileInterface.ui" line="198"/>
<source>&amp;Import...</source>
<translation>&amp;Importieren...</translation>
</message>
<message>
<location filename="../ProfileInterface.ui" line="211"/>
<location filename="../ProfileInterface.ui" line="214"/>
<source>Close profile</source>
<translation>Profil schließen</translation>
</message>
<message>
<location filename="../ProfileInterface.ui" line="214"/>
<location filename="../ProfileInterface.ui" line="217"/>
<source>&amp;Close</source>
<translation>S&amp;chließen</translation>
</message>
@ -841,29 +931,29 @@ Drücke A für Standardansicht</translation>
<translation type="obsolete">Profil schließen</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="108"/>
<location filename="../ProfileInterface.cpp" line="114"/>
<source>Loading...</source>
<translation>Lade...</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="384"/>
<location filename="../ProfileInterface.cpp" line="421"/>
<location filename="../ProfileInterface.cpp" line="390"/>
<location filename="../ProfileInterface.cpp" line="427"/>
<source>Import...</source>
<translation>Importieren...</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="385"/>
<location filename="../ProfileInterface.cpp" line="475"/>
<location filename="../ProfileInterface.cpp" line="480"/>
<location filename="../ProfileInterface.cpp" line="507"/>
<location filename="../ProfileInterface.cpp" line="523"/>
<location filename="../ProfileInterface.cpp" line="673"/>
<location filename="../ProfileInterface.cpp" line="678"/>
<location filename="../ProfileInterface.cpp" line="696"/>
<location filename="../ProfileInterface.cpp" line="701"/>
<location filename="../ProfileInterface.cpp" line="712"/>
<location filename="../ProfileInterface.cpp" line="749"/>
<location filename="../ProfileInterface.cpp" line="391"/>
<location filename="../ProfileInterface.cpp" line="481"/>
<location filename="../ProfileInterface.cpp" line="486"/>
<location filename="../ProfileInterface.cpp" line="513"/>
<location filename="../ProfileInterface.cpp" line="529"/>
<location filename="../ProfileInterface.cpp" line="679"/>
<location filename="../ProfileInterface.cpp" line="684"/>
<location filename="../ProfileInterface.cpp" line="702"/>
<location filename="../ProfileInterface.cpp" line="707"/>
<location filename="../ProfileInterface.cpp" line="718"/>
<location filename="../ProfileInterface.cpp" line="755"/>
<location filename="../ProfileInterface.cpp" line="761"/>
<source>Import</source>
<translation>Importieren</translation>
</message>
@ -872,41 +962,41 @@ Drücke A für Standardansicht</translation>
<translation type="vanished">Alle Profildateien (SGTA* PGTA*)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="388"/>
<location filename="../ProfileInterface.cpp" line="394"/>
<source>Importable files (*.g5e *.jpg *.png SGTA* PGTA*)</source>
<translation>Importfähige Dateien (*.g5e *.jpg *.png SGTA* PGTA*)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="390"/>
<location filename="../UserInterface.cpp" line="344"/>
<location filename="../ProfileInterface.cpp" line="396"/>
<location filename="../UserInterface.cpp" line="351"/>
<source>Savegames files (SGTA*)</source>
<translation>Spielstanddateien (SGTA*)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="391"/>
<location filename="../UserInterface.cpp" line="345"/>
<location filename="../ProfileInterface.cpp" line="397"/>
<location filename="../UserInterface.cpp" line="352"/>
<source>Snapmatic pictures (PGTA*)</source>
<translation>Snapmatic Bilder (PGTA*)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="392"/>
<location filename="../ProfileInterface.cpp" line="398"/>
<source>All image files (*.jpg *.png)</source>
<translation>Alle Bilddateien (*.jpg *.png)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="393"/>
<location filename="../UserInterface.cpp" line="346"/>
<location filename="../ProfileInterface.cpp" line="399"/>
<location filename="../UserInterface.cpp" line="353"/>
<source>All files (**)</source>
<translation>Alle Dateien (**)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="422"/>
<location filename="../ProfileInterface.cpp" line="437"/>
<location filename="../ProfileInterface.cpp" line="428"/>
<location filename="../ProfileInterface.cpp" line="443"/>
<source>Import file %1 of %2 files</source>
<translation>Importiere Datei %1 von %2 Dateien</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="475"/>
<location filename="../ProfileInterface.cpp" line="481"/>
<source>Import failed with...
%1</source>
@ -915,46 +1005,46 @@ Drücke A für Standardansicht</translation>
%1</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="507"/>
<location filename="../UserInterface.cpp" line="386"/>
<location filename="../ProfileInterface.cpp" line="513"/>
<location filename="../UserInterface.cpp" line="393"/>
<source>Failed to read Snapmatic picture</source>
<translation>Fehler beim Lesen vom Snapmatic Bild</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="523"/>
<location filename="../UserInterface.cpp" line="402"/>
<location filename="../ProfileInterface.cpp" line="529"/>
<location filename="../UserInterface.cpp" line="409"/>
<source>Failed to read Savegame file</source>
<translation>Fehler beim Lesen von Spielstanddatei</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="673"/>
<location filename="../ProfileInterface.cpp" line="679"/>
<source>Can&apos;t import %1 because of not valid file format</source>
<translation>Kann %1 nicht importieren weil das Dateiformat nicht gültig ist</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="696"/>
<location filename="../ProfileInterface.cpp" line="702"/>
<source>Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e</source>
<translation>Fehlgeschlagen beim Importieren vom Snapmatic Bild, Datei beginnt nicht mit PGTA oder endet mit .g5e</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="701"/>
<location filename="../ProfileInterface.cpp" line="707"/>
<source>Failed to import the Snapmatic picture, the picture is already in the game</source>
<translation>Fehlgeschlagen beim Importieren vom Snapmatic Bild, dieses Bild ist bereits im Spiel</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="856"/>
<location filename="../ProfileInterface.cpp" line="862"/>
<source>%1Export Snapmatic pictures%2&lt;br&gt;&lt;br&gt;JPG pictures make it possible to open the picture with a Image Viewer&lt;br&gt;GTA Snapmatic make it possible to import the picture into the game&lt;br&gt;&lt;br&gt;Export as:</source>
<translation>%1Exportiere Snapmatic Bilder%2&lt;br&gt;&lt;br&gt;JPG Bilder machen es möglich sie mit ein Bildansicht Programm zu öffnen&lt;br&gt;Das GTA Snapmatic Format macht es möglich sie wieder ins Game zu importieren&lt;br&gt;&lt;br&gt;Exportieren als:</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="480"/>
<location filename="../ProfileInterface.cpp" line="678"/>
<location filename="../UserInterface.cpp" line="434"/>
<location filename="../ProfileInterface.cpp" line="486"/>
<location filename="../ProfileInterface.cpp" line="684"/>
<location filename="../UserInterface.cpp" line="441"/>
<source>No valid file is selected</source>
<translation>Keine gültige Datei wurde ausgewählt</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="61"/>
<location filename="../ProfileInterface.cpp" line="62"/>
<source>Enabled pictures: %1 of %2</source>
<translation>Aktivierte Bilder: %1 von %2</translation>
</message>
@ -963,35 +1053,35 @@ Drücke A für Standardansicht</translation>
<translation type="vanished">Fehlgeschlagen beim Importieren vom Snapmatic Bild, Datei beginnt nicht mit PGTA</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="712"/>
<location filename="../ProfileInterface.cpp" line="718"/>
<source>Failed to import the Snapmatic picture, can&apos;t copy the file into profile</source>
<translation>Fehlgeschlagen beim Importieren vom Snapmatic Bild, kann Snapmatic Bild nicht ins Profil kopieren </translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="749"/>
<location filename="../ProfileInterface.cpp" line="755"/>
<source>Failed to import the Savegame, can&apos;t copy the file into profile</source>
<translation>Fehlgeschlagen beim Importieren vom Spielstand, kann Spielstanddatei nicht ins Profil kopieren</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="755"/>
<location filename="../ProfileInterface.cpp" line="761"/>
<source>Failed to import the Savegame, no Savegame slot is left</source>
<translation>Fehlgeschlagen beim Importieren vom Spielstand, kein Spielstandslot mehr frei</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="841"/>
<location filename="../ProfileInterface.cpp" line="859"/>
<location filename="../ProfileInterface.cpp" line="847"/>
<location filename="../ProfileInterface.cpp" line="865"/>
<source>JPG pictures and GTA Snapmatic</source>
<translation>JPG Bilder und GTA Snapmatic</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="842"/>
<location filename="../ProfileInterface.cpp" line="864"/>
<location filename="../ProfileInterface.cpp" line="848"/>
<location filename="../ProfileInterface.cpp" line="870"/>
<source>JPG pictures only</source>
<translation>Nur JPG Bilder</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="843"/>
<location filename="../ProfileInterface.cpp" line="868"/>
<location filename="../ProfileInterface.cpp" line="849"/>
<location filename="../ProfileInterface.cpp" line="874"/>
<source>GTA Snapmatic only</source>
<translation>Nur GTA Snapmatic</translation>
</message>
@ -1010,25 +1100,25 @@ Das GTA Snapmatic Format macht es möglich sie wieder ins Game zu importieren
Exportieren als:</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="953"/>
<location filename="../ProfileInterface.cpp" line="995"/>
<location filename="../ProfileInterface.cpp" line="959"/>
<location filename="../ProfileInterface.cpp" line="1001"/>
<source>No Snapmatic pictures or Savegames files are selected</source>
<translation>Keine Snapmatic Bilder oder Spielstände ausgewählt</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="961"/>
<location filename="../ProfileInterface.cpp" line="989"/>
<location filename="../ProfileInterface.cpp" line="967"/>
<location filename="../ProfileInterface.cpp" line="995"/>
<location filename="../ProfileInterface.cpp" line="1001"/>
<source>Remove selected</source>
<translation>Auswahl löschen</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="961"/>
<location filename="../ProfileInterface.cpp" line="967"/>
<source>You really want remove the selected Snapmatic picutres and Savegame files?</source>
<translation>Möchtest du wirklich die ausgewählten Snapmatic Bilder und Spielstanddateien löschen?</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="989"/>
<location filename="../ProfileInterface.cpp" line="995"/>
<source>Failed at remove the complete selected Snapmatic pictures and/or Savegame files</source>
<translation>Fehlgeschlagen beim kompletten entfernen der ausgewählten Snapmatic Bilder und/oder der Spielstanddateien</translation>
</message>
@ -1049,10 +1139,10 @@ Exportieren als:</translation>
<translation type="obsolete">Fehlgeschlagenen beim Import vom Spielstand weil kein Spielstandslot mehr übrig ist</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="818"/>
<location filename="../ProfileInterface.cpp" line="856"/>
<location filename="../ProfileInterface.cpp" line="933"/>
<location filename="../ProfileInterface.cpp" line="953"/>
<location filename="../ProfileInterface.cpp" line="824"/>
<location filename="../ProfileInterface.cpp" line="862"/>
<location filename="../ProfileInterface.cpp" line="939"/>
<location filename="../ProfileInterface.cpp" line="959"/>
<source>Export selected</source>
<translation>Auswahl exportieren</translation>
</message>
@ -1073,12 +1163,12 @@ Exportieren als:</translation>
<translation type="obsolete">Wie sollen wir mit den Snapmatic Bilder umgehen?</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="899"/>
<location filename="../ProfileInterface.cpp" line="905"/>
<source>Export selected...</source>
<translation>Auswahl exportieren...</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="900"/>
<location filename="../ProfileInterface.cpp" line="906"/>
<source>Initializing export...</source>
<translation>Initialisiere Export...</translation>
</message>
@ -1087,7 +1177,7 @@ Exportieren als:</translation>
<translation type="obsolete">Initialisierung...</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="933"/>
<location filename="../ProfileInterface.cpp" line="939"/>
<source>Export failed with...
%1</source>
@ -1117,13 +1207,13 @@ Exportieren als:</translation>
<translation>Exportiere Datei %1 von %2 Dateien</translation>
</message>
<message>
<location filename="../UserInterface.cpp" line="342"/>
<location filename="../UserInterface.cpp" line="349"/>
<source>All profile files (*.g5e SGTA* PGTA*)</source>
<translation>Alle Profildateien (*.g5e SGTA* PGTA*)</translation>
</message>
<message>
<location filename="../ProfileInterface.cpp" line="389"/>
<location filename="../UserInterface.cpp" line="343"/>
<location filename="../ProfileInterface.cpp" line="395"/>
<location filename="../UserInterface.cpp" line="350"/>
<source>GTA V Export (*.g5e)</source>
<translation>GTA V Export (*.g5e)</translation>
</message>
@ -1145,7 +1235,7 @@ Exportieren als:</translation>
<name>SavegameDialog</name>
<message>
<location filename="../SavegameDialog.ui" line="14"/>
<location filename="../SavegameDialog.cpp" line="33"/>
<location filename="../SavegameDialog.cpp" line="38"/>
<source>Savegame Viewer</source>
<translation>Spielstandanzeiger</translation>
</message>
@ -1177,7 +1267,7 @@ Exportieren als:</translation>
<translation type="obsolete">Schließen</translation>
</message>
<message>
<location filename="../SavegameDialog.cpp" line="33"/>
<location filename="../SavegameDialog.cpp" line="38"/>
<source>Failed at %1</source>
<translation>Fehlgeschlagen bei %1</translation>
</message>
@ -1204,12 +1294,12 @@ Exportieren als:</translation>
<translation type="vanished">SPIELSTAND - %1&lt;br&gt;%2<