From f9eee757575dd8ce97a0882a5fdaaae923cf61b8 Mon Sep 17 00:00:00 2001
From: Syping <schiedelrafael@keppe.org>
Date: Wed, 22 Nov 2017 14:59:40 +0100
Subject: [PATCH] add JSON Editor + Interface improvements

---
 .travis.yml             |   8 +-
 CrewDatabase.cpp        |  11 +
 CrewDatabase.h          |   1 +
 JsonEditorDialog.cpp    | 164 ++++++++++++++
 JsonEditorDialog.h      |  56 +++++
 JsonEditorDialog.ui     | 124 +++++++++++
 MapLocationDialog.cpp   |   1 +
 MapLocationDialog.h     |   2 +-
 OptionsDialog.cpp       |  86 +++++++-
 OptionsDialog.h         |   3 +
 OptionsDialog.ui        |  73 ++++++-
 PictureDialog.cpp       | 117 +++++-----
 PictureDialog.h         |  12 +-
 ProfileInterface.cpp    |  57 +++--
 ProfileInterface.h      |   3 +-
 SnapmaticEditor.cpp     |  13 +-
 SnapmaticPicture.cpp    |  95 ++++++--
 SnapmaticPicture.h      |   3 +-
 SnapmaticWidget.cpp     |  48 +++-
 SnapmaticWidget.h       |   2 +
 anpro/JSHighlighter.cpp |  72 ++++++
 anpro/JSHighlighter.h   |  56 +++++
 config.h                |   2 +-
 gta5view.pro            |   7 +-
 lang/gta5sync_no.ts     | 473 ++++++++++++++++++++++++++--------------
 main.cpp                |  38 +++-
 res/app.rc              |   4 +-
 res/gta5sync_de.qm      | Bin 33883 -> 35652 bytes
 res/gta5sync_de.ts      | 380 ++++++++++++++++++++------------
 res/gta5sync_en_US.qm   | Bin 18413 -> 18239 bytes
 res/gta5sync_en_US.ts   | 364 +++++++++++++++++++------------
 res/gta5sync_fr.qm      | Bin 26687 -> 26755 bytes
 res/gta5sync_fr.ts      | 368 +++++++++++++++++++------------
 res/gta5sync_ru.qm      | Bin 32539 -> 32511 bytes
 res/gta5sync_ru.ts      | 366 +++++++++++++++++++------------
 35 files changed, 2153 insertions(+), 856 deletions(-)
 create mode 100644 JsonEditorDialog.cpp
 create mode 100644 JsonEditorDialog.h
 create mode 100644 JsonEditorDialog.ui
 create mode 100644 anpro/JSHighlighter.cpp
 create mode 100644 anpro/JSHighlighter.h

diff --git a/.travis.yml b/.travis.yml
index c1e15cf..7969f5b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -32,14 +32,14 @@ before_script:
 
 script:
   - cd qt5
-  - qmake -qt=5 GTA5SYNC_PREFIX=/usr QMAKE_CXXFLAGS+=-std=c++11 DEFINES+=GTA5SYNC_BUILDTYPE_DEV "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"$PACKAGE_VERSION-dev3\\\\\\\"" DEFINES+=GTA5SYNC_QCONF ../../gta5view.pro
+  - qmake -qt=5 GTA5SYNC_PREFIX=/usr QMAKE_CXXFLAGS+=-std=c++11 DEFINES+=GTA5SYNC_BUILDTYPE_DEV "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"$PACKAGE_VERSION-dev4\\\\\\\"" DEFINES+=GTA5SYNC_QCONF ../../gta5view.pro
   - make -j 4
-  - sudo checkinstall -D --default --nodoc --install=no --pkgname=gta5view-qt5 --pkgversion=$PACKAGE_VERSION --pkgrelease=dev3 --pkggroup=utility --maintainer="Syping on Travis \<travisci@syping.de\>" --requires=libqt5core5a,libqt5gui5,libqt5network5,libqt5widgets5,qttranslations5-l10n --conflicts=gta5view,gta5view-qt4 --replaces=gta5view,gta5view-qt4 --pakdir=../../package
+  - sudo checkinstall -D --default --nodoc --install=no --pkgname=gta5view-qt5 --pkgversion=$PACKAGE_VERSION --pkgrelease=dev4 --pkggroup=utility --maintainer="Syping on Travis \<travisci@syping.de\>" --requires=libqt5core5a,libqt5gui5,libqt5network5,libqt5widgets5,qttranslations5-l10n --conflicts=gta5view,gta5view-qt4 --replaces=gta5view,gta5view-qt4 --pakdir=../../package
   - cd ..
   - cd qt4
-  - qmake -qt=4 GTA5SYNC_PREFIX=/usr QMAKE_CXXFLAGS+=-std=c++11 DEFINES+=GTA5SYNC_BUILDTYPE_DEV "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"$PACKAGE_VERSION-dev3\\\\\\\"" DEFINES+=GTA5SYNC_QCONF ../../gta5view.pro
+  - qmake -qt=4 GTA5SYNC_PREFIX=/usr QMAKE_CXXFLAGS+=-std=c++11 DEFINES+=GTA5SYNC_BUILDTYPE_DEV "DEFINES+=GTA5SYNC_APPVER=\\\\\\\"$PACKAGE_VERSION-dev4\\\\\\\"" DEFINES+=GTA5SYNC_QCONF ../../gta5view.pro
   - make -j 4
-  - sudo checkinstall -D --default --nodoc --install=no --pkgname=gta5view-qt4 --pkgversion=$PACKAGE_VERSION --pkgrelease=dev3 --pkggroup=utility --maintainer="Syping on Travis \<travisci@syping.de\>" --requires=libqtcore4,libqtgui4,libqt4-network,qtcore4-l10n --conflicts=gta5view,gta5view-qt5 --replaces=gta5view,gta5view-qt5 --pakdir=../../package
+  - sudo checkinstall -D --default --nodoc --install=no --pkgname=gta5view-qt4 --pkgversion=$PACKAGE_VERSION --pkgrelease=dev4 --pkggroup=utility --maintainer="Syping on Travis \<travisci@syping.de\>" --requires=libqtcore4,libqtgui4,libqt4-network,qtcore4-l10n --conflicts=gta5view,gta5view-qt5 --replaces=gta5view,gta5view-qt5 --pakdir=../../package
   - cd ..
 
 deploy:
diff --git a/CrewDatabase.cpp b/CrewDatabase.cpp
index 69e4b06..73d9bed 100755
--- a/CrewDatabase.cpp
+++ b/CrewDatabase.cpp
@@ -92,6 +92,17 @@ QStringList CrewDatabase::getCompatibleCrews_p()
     return crewDB->childKeys();
 }
 
+QString CrewDatabase::getCrewName(QString crewID)
+{
+    QMutexLocker locker(&mutex);
+#ifdef GTA5SYNC_DEBUG
+    qDebug() << "getCrewName" << crewID;
+#endif
+    QString crewStr = crewDB->value(crewID, crewID).toString();
+    if (crewID == "0") crewStr = tr("No Crew", "");
+    return crewStr;
+}
+
 QString CrewDatabase::getCrewName(int crewID)
 {
     QMutexLocker locker(&mutex);
diff --git a/CrewDatabase.h b/CrewDatabase.h
index b5c7ee0..0bb9933 100755
--- a/CrewDatabase.h
+++ b/CrewDatabase.h
@@ -29,6 +29,7 @@ class CrewDatabase : public QObject
     Q_OBJECT
 public:
     explicit CrewDatabase(QObject *parent = 0);
+    QString getCrewName(QString crewID);
     QString getCrewName(int crewID);
     QStringList getCompatibleCrews();
     QStringList getCrews();
diff --git a/JsonEditorDialog.cpp b/JsonEditorDialog.cpp
new file mode 100644
index 0000000..ddf72bd
--- /dev/null
+++ b/JsonEditorDialog.cpp
@@ -0,0 +1,164 @@
+/*****************************************************************************
+* gta5sync GRAND THEFT AUTO V SYNC
+* Copyright (C) 2017 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
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*****************************************************************************/
+
+#include "JsonEditorDialog.h"
+#include "ui_JsonEditorDialog.h"
+#include "SnapmaticEditor.h"
+#include "AppEnv.h"
+#include <QStringBuilder>
+#include <QJsonDocument>
+#include <QMessageBox>
+
+#if QT_VERSION >= 0x050200
+#include <QFontDatabase>
+#include <QDebug>
+#endif
+
+JsonEditorDialog::JsonEditorDialog(SnapmaticPicture *picture, QWidget *parent) :
+    QDialog(parent), smpic(picture),
+    ui(new Ui::JsonEditorDialog)
+{
+    // Set Window Flags
+    setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowMinMaxButtonsHint);
+
+    ui->setupUi(this);
+    if (QIcon::hasThemeIcon("dialog-close"))
+    {
+        ui->cmdClose->setIcon(QIcon::fromTheme("dialog-close"));
+    }
+    jsonCode = picture->getJsonStr();
+
+#if QT_VERSION >= 0x050200
+    ui->txtJSON->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont));
+#endif
+    QFontMetrics fm(ui->txtJSON->font());
+    ui->txtJSON->setTabStopWidth(fm.width("    "));
+
+    QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonCode.toUtf8());
+    ui->txtJSON->setStyleSheet("QPlainTextEdit{background-color: rgb(46, 47, 48); color: rgb(238, 231, 172);}");
+    ui->txtJSON->setPlainText(QString::fromUtf8(jsonDocument.toJson(QJsonDocument::Indented)).trimmed());
+    jsonHl = new JSHighlighter(ui->txtJSON->document());
+
+    // DPI calculation
+    qreal screenRatio = AppEnv::screenRatio();
+    ui->hlButtons->setContentsMargins(9 * screenRatio, 0, 9 * screenRatio, 0);
+    if (screenRatio > 1)
+    {
+        ui->lineJSON->setMinimumHeight(qRound(1 * screenRatio));
+        ui->lineJSON->setMaximumHeight(qRound(1 * screenRatio));
+    }
+    resize(450 * screenRatio, 550 * screenRatio);
+}
+
+JsonEditorDialog::~JsonEditorDialog()
+{
+    delete jsonHl;
+    delete ui;
+}
+
+void JsonEditorDialog::closeEvent(QCloseEvent *ev)
+{
+    QString jsonPatched = QString(ui->txtJSON->toPlainText()).replace("\t", "    ");
+    QJsonDocument jsonNew = QJsonDocument::fromJson(jsonPatched.toUtf8());
+    QJsonDocument jsonOriginal = QJsonDocument::fromJson(jsonCode.toUtf8());
+    QString originalCode = QString::fromUtf8(jsonOriginal.toJson(QJsonDocument::Compact));
+    QString newCode = QString::fromUtf8(jsonNew.toJson(QJsonDocument::Compact));
+    if (newCode != originalCode)
+    {
+        QMessageBox::StandardButton button = QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("<h4>Unsaved changes detected</h4>You want to save the JSON content before you quit?"), QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, QMessageBox::Cancel);
+        if (button == QMessageBox::Yes)
+        {
+            if (saveJsonContent())
+            {
+                ev->accept();
+            }
+            else
+            {
+                ev->ignore();
+            }
+            return;
+        }
+        else if (button == QMessageBox::No)
+        {
+            ev->accept();
+            return;
+        }
+        else
+        {
+            ev->ignore();
+            return;
+        }
+    }
+}
+
+bool JsonEditorDialog::saveJsonContent()
+{
+    QString jsonPatched = QString(ui->txtJSON->toPlainText()).replace("\t", "    ");
+    QJsonDocument jsonNew = QJsonDocument::fromJson(jsonPatched.toUtf8());
+    if (!jsonNew.isEmpty())
+    {
+        QJsonDocument jsonOriginal = QJsonDocument::fromJson(jsonCode.toUtf8());
+        QString originalCode = QString::fromUtf8(jsonOriginal.toJson(QJsonDocument::Compact));
+        QString newCode = QString::fromUtf8(jsonNew.toJson(QJsonDocument::Compact));
+        if (newCode != originalCode)
+        {
+            QString currentFilePath = smpic->getPictureFilePath();
+            QString originalFilePath = smpic->getOriginalPictureFilePath();
+            QString backupFileName = originalFilePath % ".bak";
+            if (!QFile::exists(backupFileName))
+            {
+                QFile::copy(currentFilePath, backupFileName);
+            }
+            smpic->setJsonStr(newCode, true);
+            if (!smpic->isJsonOk())
+            {
+                QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("Patching of Snapmatic Properties failed because of JSON Error"));
+                smpic->setJsonStr(originalCode, true);
+                return false;
+            }
+            if (!smpic->exportPicture(currentFilePath))
+            {
+                QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("Patching of Snapmatic Properties failed because of I/O Error"));
+                smpic->setJsonStr(originalCode, true);
+                return false;
+            }
+            jsonCode = newCode;
+            smpic->emitUpdate();
+            return true;
+        }
+        return true;
+    }
+    else
+    {
+        QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("Patching of Snapmatic Properties failed because of JSON Error"));
+        return false;
+    }
+}
+
+void JsonEditorDialog::on_cmdClose_clicked()
+{
+    this->close();
+}
+
+void JsonEditorDialog::on_cmdSave_clicked()
+{
+    if (saveJsonContent())
+    {
+        this->close();
+    }
+}
diff --git a/JsonEditorDialog.h b/JsonEditorDialog.h
new file mode 100644
index 0000000..b881088
--- /dev/null
+++ b/JsonEditorDialog.h
@@ -0,0 +1,56 @@
+/*****************************************************************************
+* gta5sync GRAND THEFT AUTO V SYNC
+* Copyright (C) 2017 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
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*****************************************************************************/
+
+#ifndef JSONEDITORDIALOG_H
+#define JSONEDITORDIALOG_H
+
+#include "SnapmaticPicture.h"
+#include "JSHighlighter.h"
+#include <QDialog>
+
+namespace Ui {
+class JsonEditorDialog;
+}
+
+class JsonEditorDialog : public QDialog
+{
+    Q_OBJECT
+
+public:
+    explicit JsonEditorDialog(SnapmaticPicture *picture, QWidget *parent = 0);
+    bool saveJsonContent();
+    ~JsonEditorDialog();
+
+protected:
+    void closeEvent(QCloseEvent *ev);
+
+private slots:
+    void on_cmdClose_clicked();
+    void on_cmdSave_clicked();
+
+signals:
+    void codeUpdated(QString jsonCode);
+
+private:
+    QString jsonCode;
+    JSHighlighter *jsonHl;
+    SnapmaticPicture *smpic;
+    Ui::JsonEditorDialog *ui;
+};
+
+#endif // JSONEDITORDIALOG_H
diff --git a/JsonEditorDialog.ui b/JsonEditorDialog.ui
new file mode 100644
index 0000000..3221c12
--- /dev/null
+++ b/JsonEditorDialog.ui
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>JsonEditorDialog</class>
+ <widget class="QDialog" name="JsonEditorDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>550</width>
+    <height>450</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Snapmatic JSON Editor</string>
+  </property>
+  <layout class="QVBoxLayout" name="vlInterface">
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <item>
+    <layout class="QVBoxLayout" name="vlJSON">
+     <property name="spacing">
+      <number>0</number>
+     </property>
+     <property name="leftMargin">
+      <number>0</number>
+     </property>
+     <property name="topMargin">
+      <number>0</number>
+     </property>
+     <property name="rightMargin">
+      <number>0</number>
+     </property>
+     <property name="bottomMargin">
+      <number>0</number>
+     </property>
+     <item>
+      <widget class="QPlainTextEdit" name="txtJSON">
+       <property name="frameShape">
+        <enum>QFrame::NoFrame</enum>
+       </property>
+       <property name="frameShadow">
+        <enum>QFrame::Plain</enum>
+       </property>
+       <property name="lineWidth">
+        <number>0</number>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="Line" name="lineJSON">
+       <property name="minimumSize">
+        <size>
+         <width>0</width>
+         <height>1</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>16777215</width>
+         <height>1</height>
+        </size>
+       </property>
+       <property name="styleSheet">
+        <string notr="true">QFrame[frameShape=&quot;4&quot;]
+{
+    color: black;
+}</string>
+       </property>
+       <property name="frameShadow">
+        <enum>QFrame::Plain</enum>
+       </property>
+       <property name="lineWidth">
+        <number>1</number>
+       </property>
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="hlButtons">
+     <item>
+      <spacer name="hsButtons">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>0</width>
+         <height>0</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="cmdSave">
+       <property name="text">
+        <string>&amp;Save</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="cmdClose">
+       <property name="text">
+        <string>&amp;Close</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/MapLocationDialog.cpp b/MapLocationDialog.cpp
index 03c2a45..64f7271 100644
--- a/MapLocationDialog.cpp
+++ b/MapLocationDialog.cpp
@@ -34,6 +34,7 @@ MapLocationDialog::MapLocationDialog(double x, double y, QWidget *parent) :
     ui->cmdApply->setVisible(false);
     ui->cmdRevert->setVisible(false);
     ui->cmdDone->setCursor(Qt::ArrowCursor);
+    ui->cmdClose->setCursor(Qt::ArrowCursor);
 
     // DPI calculation
     qreal screenRatio = AppEnv::screenRatio();
diff --git a/MapLocationDialog.h b/MapLocationDialog.h
index 5d0793a..1abfa93 100644
--- a/MapLocationDialog.h
+++ b/MapLocationDialog.h
@@ -51,13 +51,13 @@ private slots:
     void on_cmdClose_clicked();
 
 private:
-    Ui::MapLocationDialog *ui;
     double xpos_old;
     double ypos_old;
     double xpos_new;
     double ypos_new;
     bool propUpdate;
     bool changeMode;
+    Ui::MapLocationDialog *ui;
 };
 
 #endif // MAPLOCATIONDIALOG_H
diff --git a/OptionsDialog.cpp b/OptionsDialog.cpp
index a9d8fea..a7b9ce7 100755
--- a/OptionsDialog.cpp
+++ b/OptionsDialog.cpp
@@ -25,6 +25,7 @@
 #include "config.h"
 #include <QStringBuilder>
 #include <QDesktopWidget>
+#include <QStyleFactory>
 #include <QApplication>
 #include <QFileDialog>
 #include <QMessageBox>
@@ -72,18 +73,19 @@ OptionsDialog::OptionsDialog(ProfileDatabase *profileDB, QWidget *parent) :
         ui->cmdCancel->setIcon(QIcon::fromTheme("dialog-cancel"));
     }
 
-    // DPI calculation
-    qreal screenRatio = AppEnv::screenRatio();
-    resize(435 * screenRatio, 405 * screenRatio);
-
     setupTreeWidget();
     setupLanguageBox();
     setupRadioButtons();
     setupDefaultProfile();
     setupPictureSettings();
     setupCustomGTAFolder();
+    setupInterfaceSettings();
     setupSnapmaticPictureViewer();
 
+    // DPI calculation
+    qreal screenRatio = AppEnv::screenRatio();
+    resize(435 * screenRatio, 405 * screenRatio);
+
 #ifdef GTA5SYNC_DISABLED
     ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabSync));
 #endif
@@ -239,6 +241,61 @@ void OptionsDialog::setupRadioButtons()
     }
 }
 
+void OptionsDialog::setupInterfaceSettings()
+{
+    settings->beginGroup("Startup");
+    bool alwaysUseMessageFont = settings->value("AlwaysUseMessageFont", false).toBool();
+    ui->cbAlwaysUseMessageFont->setChecked(alwaysUseMessageFont);
+#ifdef GTA5SYNC_WIN
+    if (QSysInfo::windowsVersion() >= 0x0080)
+    {
+        ui->gbFont->setVisible(false);
+        ui->cbAlwaysUseMessageFont->setVisible(false);
+    }
+#else
+    ui->gbFont->setVisible(false);
+    ui->cbAlwaysUseMessageFont->setVisible(false);
+#endif
+    QString currentStyle = qApp->style()->objectName();
+    QString appStyle = settings->value("AppStyle", currentStyle).toString();
+    bool customStyle = settings->value("CustomStyle", false).toBool();
+    const QStringList availableStyles = QStyleFactory::keys();
+    ui->cbStyleList->addItems(availableStyles);
+    if (availableStyles.contains(appStyle, Qt::CaseInsensitive))
+    {
+        // use 'for' for select to be sure it's case insensitive
+        int currentIndex = 0;
+        for (QString currentStyleFF : availableStyles)
+        {
+            if (currentStyleFF.toLower() == appStyle.toLower())
+            {
+                ui->cbStyleList->setCurrentIndex(currentIndex);
+            }
+            currentIndex++;
+        }
+    }
+    else
+    {
+        if (availableStyles.contains(currentStyle, Qt::CaseInsensitive))
+        {
+            int currentIndex = 0;
+            for (QString currentStyleFF : availableStyles)
+            {
+                if (currentStyleFF.toLower() == currentStyle.toLower())
+                {
+                    ui->cbStyleList->setCurrentIndex(currentIndex);
+                }
+                currentIndex++;
+            }
+        }
+    }
+    if (customStyle)
+    {
+        ui->cbDefaultStyle->setChecked(false);
+    }
+    settings->endGroup();
+}
+
 void OptionsDialog::on_cmdOK_clicked()
 {
     applySettings();
@@ -310,6 +367,22 @@ void OptionsDialog::applySettings()
     settings->setValue("force", forceCustomFolder);
     settings->endGroup();
 
+    bool defaultStyle = ui->cbDefaultStyle->isChecked();
+    settings->beginGroup("Startup");
+    if (!defaultStyle)
+    {
+        QString newStyle = ui->cbStyleList->currentText();
+        settings->setValue("CustomStyle", true);
+        settings->setValue("AppStyle", newStyle);
+        qApp->setStyle(QStyleFactory::create(newStyle));
+    }
+    else
+    {
+        settings->setValue("CustomStyle", false);
+    }
+    settings->setValue("AlwaysUseMessageFont", ui->cbAlwaysUseMessageFont->isChecked());
+    settings->endGroup();
+
 #if QT_VERSION >= 0x050000
     bool languageChanged = ui->cbLanguage->currentData().toString() != currentLanguage;
     bool languageAreaChanged = ui->cbAreaLanguage->currentData().toString() != currentAreaLanguage;
@@ -494,3 +567,8 @@ void OptionsDialog::on_cmdExploreFolder_clicked()
         ui->txtFolder->setText(GTAV_Folder);
     }
 }
+
+void OptionsDialog::on_cbDefaultStyle_toggled(bool checked)
+{
+    ui->cbStyleList->setDisabled(checked);
+}
diff --git a/OptionsDialog.h b/OptionsDialog.h
index 18715b6..03d2e81 100755
--- a/OptionsDialog.h
+++ b/OptionsDialog.h
@@ -46,6 +46,7 @@ private slots:
     void on_hsPicQuality_valueChanged(int value);
     void on_cbIgnoreAspectRatio_toggled(bool checked);
     void on_cmdExploreFolder_clicked();
+    void on_cbDefaultStyle_toggled(bool checked);
 
 signals:
     void settingsApplied(int contentMode, bool languageChanged);
@@ -61,6 +62,7 @@ private:
     QString defaultProfile;
     QString percentString;
     QSettings *settings;
+    bool withoutPlayers;
     bool currentFFolder;
     int contentMode;
     int customQuality;
@@ -73,6 +75,7 @@ private:
     void setupDefaultProfile();
     void setupPictureSettings();
     void setupCustomGTAFolder();
+    void setupInterfaceSettings();
     void setupSnapmaticPictureViewer();
     void applySettings();
 };
diff --git a/OptionsDialog.ui b/OptionsDialog.ui
index c23d9ba..1a70c0f 100755
--- a/OptionsDialog.ui
+++ b/OptionsDialog.ui
@@ -314,7 +314,7 @@
         </widget>
        </item>
        <item>
-        <spacer name="vsTabPictures">
+        <spacer name="vsPictures">
          <property name="orientation">
           <enum>Qt::Vertical</enum>
          </property>
@@ -382,15 +382,15 @@
        </item>
       </layout>
      </widget>
-     <widget class="QWidget" name="tabLocalization">
+     <widget class="QWidget" name="tabInterface">
       <attribute name="title">
-       <string>Language</string>
+       <string>Interface</string>
       </attribute>
-      <layout class="QVBoxLayout" name="vlLocalization">
+      <layout class="QVBoxLayout" name="vlInterface">
        <item>
         <widget class="QGroupBox" name="gbLanguage">
          <property name="title">
-          <string>Interface</string>
+          <string>Language for Interface</string>
          </property>
          <layout class="QVBoxLayout" name="vlLanguage">
           <item>
@@ -409,9 +409,9 @@
        <item>
         <widget class="QGroupBox" name="gbAreas">
          <property name="title">
-          <string>Areas</string>
+          <string>Language for Areas</string>
          </property>
-         <layout class="QVBoxLayout" name="verticalLayout">
+         <layout class="QVBoxLayout" name="vlAreas">
           <item>
            <widget class="QComboBox" name="cbAreaLanguage"/>
           </item>
@@ -425,6 +425,65 @@
          </layout>
         </widget>
        </item>
+       <item>
+        <widget class="QGroupBox" name="gbStyle">
+         <property name="title">
+          <string>Style</string>
+         </property>
+         <layout class="QVBoxLayout" name="vlStyle">
+          <item>
+           <widget class="QCheckBox" name="cbDefaultStyle">
+            <property name="text">
+             <string>Use Default Style (Restart)</string>
+            </property>
+            <property name="checked">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <layout class="QHBoxLayout" name="hlStyle">
+            <item>
+             <widget class="QLabel" name="labStyle">
+              <property name="text">
+               <string>Style:</string>
+              </property>
+             </widget>
+            </item>
+            <item>
+             <widget class="QComboBox" name="cbStyleList">
+              <property name="enabled">
+               <bool>false</bool>
+              </property>
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="gbFont">
+         <property name="title">
+          <string>Font</string>
+         </property>
+         <layout class="QVBoxLayout" name="vlFont">
+          <item>
+           <widget class="QCheckBox" name="cbAlwaysUseMessageFont">
+            <property name="text">
+             <string>Always use Message Font (Windows 2003 and earlier)</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </widget>
+       </item>
        <item>
         <spacer name="vsInterface">
          <property name="orientation">
diff --git a/PictureDialog.cpp b/PictureDialog.cpp
index d8c1646..1e8837c 100755
--- a/PictureDialog.cpp
+++ b/PictureDialog.cpp
@@ -22,6 +22,7 @@
 #include "ui_PictureDialog.h"
 #include "SidebarGenerator.h"
 #include "MapLocationDialog.h"
+#include "JsonEditorDialog.h"
 #include "SnapmaticEditor.h"
 #include "StandardPaths.h"
 #include "PictureExport.h"
@@ -62,6 +63,17 @@
 #include <QUrl>
 #include <QDir>
 
+// Macros for better Overview + RAM
+#define locX QString::number(picture->getSnapmaticProperties().location.x)
+#define locY QString::number(picture->getSnapmaticProperties().location.y)
+#define locZ QString::number(picture->getSnapmaticProperties().location.z)
+#define crewID QString::number(picture->getSnapmaticProperties().crewID)
+#define picArea picture->getSnapmaticProperties().location.area
+#define picPath picture->getPictureFilePath()
+#define picTitl StringParser::escapeString(picture->getPictureTitle())
+#define plyrsList picture->getSnapmaticProperties().playersList
+#define created picture->getSnapmaticProperties().createdDateTime.toString(Qt::DefaultLocaleShortDate)
+
 PictureDialog::PictureDialog(ProfileDatabase *profileDB, CrewDatabase *crewDB, QWidget *parent) :
     QDialog(parent), profileDB(profileDB), crewDB(crewDB),
     ui(new Ui::PictureDialog)
@@ -102,22 +114,13 @@ void PictureDialog::setupPictureDialog(bool withDatabase_)
     windowTitleStr = this->windowTitle();
     jsonDrawString = ui->labJSON->text();
     ui->cmdManage->setEnabled(false);
-    plyrsList = QStringList();
     fullscreenWidget = nullptr;
     rqFullscreen = false;
     previewMode = false;
     naviEnabled = false;
     indexed = false;
-    picArea = "";
-    picTitl = "";
-    picPath = "";
-    created = "";
-    crewStr = "";
-    crewID = "";
-    locX = "";
-    locY = "";
-    locZ = "";
     smpic = nullptr;
+    crewStr = "";
 
     // With datebase
     withDatabase = withDatabase_;
@@ -145,9 +148,11 @@ void PictureDialog::setupPictureDialog(bool withDatabase_)
     jpegExportAction = manageMenu->addAction(tr("Export as &Picture..."), this, SLOT(exportSnapmaticPicture()));
     pgtaExportAction = manageMenu->addAction(tr("Export as &Snapmatic..."), this, SLOT(copySnapmaticPicture()));
     manageMenuSep1 = manageMenu->addSeparator();
-    openViewerAction = manageMenu->addAction(tr("Open &Map View..."), this, SLOT(openPreviewMap()));
-    openViewerAction->setShortcut(Qt::Key_M);
     propEditorAction = manageMenu->addAction(tr("&Edit Properties..."), this, SLOT(editSnapmaticProperties()));
+    manageMenuSep2 = manageMenu->addSeparator();
+    openViewerAction = manageMenu->addAction(tr("Open &Map Viewer..."), this, SLOT(openPreviewMap()));
+    openViewerAction->setShortcut(Qt::Key_M);
+    jsonEditorAction = manageMenu->addAction(tr("Open &JSON Editor..."), this, SLOT(editSnapmaticRawJson()));
     ui->cmdManage->setMenu(manageMenu);
 
     // Global map
@@ -176,9 +181,11 @@ PictureDialog::~PictureDialog()
 {
     delete propEditorAction;
     delete openViewerAction;
+    delete jsonEditorAction;
     delete jpegExportAction;
     delete pgtaExportAction;
     delete manageMenuSep1;
+    delete manageMenuSep2;
     delete manageMenu;
     delete ui;
 }
@@ -426,7 +433,6 @@ void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture, bool readOk,
     snapmaticPicture = QImage();
     indexed = _indexed;
     index = _index;
-    picPath = picture->getPictureFilePath();
     smpic = picture;
     if (!readOk)
     {
@@ -441,23 +447,14 @@ void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture, bool readOk,
     }
     if (picture->isJsonOk())
     {
-        locX = QString::number(picture->getSnapmaticProperties().location.x);
-        locY = QString::number(picture->getSnapmaticProperties().location.y);
-        locZ = QString::number(picture->getSnapmaticProperties().location.z);
         if (withDatabase)
         {
-            crewID = QString::number(picture->getSnapmaticProperties().crewID);
-            crewStr = crewDB->getCrewName(picture->getSnapmaticProperties().crewID);
+            crewStr = crewDB->getCrewName(crewID);
         }
         else
         {
-            crewID = QString::number(picture->getSnapmaticProperties().crewID);
-            crewStr = QString::number(picture->getSnapmaticProperties().crewID);
+            crewStr = crewID;
         }
-        created = picture->getSnapmaticProperties().createdDateTime.toString(Qt::DefaultLocaleShortDate);
-        plyrsList = picture->getSnapmaticProperties().playersList;
-        picTitl = StringParser::escapeString(picture->getPictureTitle());
-        picArea = picture->getSnapmaticProperties().location.area;
         if (globalMap.contains(picArea))
         {
             picAreaStr = globalMap[picArea];
@@ -565,15 +562,18 @@ void PictureDialog::renderPicture()
 
 void PictureDialog::crewNameUpdated()
 {
-    if (withDatabase && crewID == crewStr)
+    SnapmaticPicture *picture = smpic; // used by macro
+    QString crewIDStr = crewID;
+    if (withDatabase && crewIDStr == crewStr)
     {
-        crewStr = crewDB->getCrewName(crewID.toInt());
+        crewStr = crewDB->getCrewName(crewIDStr);
         ui->labJSON->setText(jsonDrawString.arg(locX, locY, locZ, generatePlayersString(), generateCrewString(), picTitl, picAreaStr, created));
     }
 }
 
 void PictureDialog::playerNameUpdated()
 {
+    SnapmaticPicture *picture = smpic; // used by macro
     if (plyrsList.count() >= 1)
     {
         ui->labJSON->setText(jsonDrawString.arg(locX, locY, locZ, generatePlayersString(), generateCrewString(), picTitl, picAreaStr, created));
@@ -582,19 +582,23 @@ void PictureDialog::playerNameUpdated()
 
 QString PictureDialog::generateCrewString()
 {
-    if (crewID != "0" && !crewID.isEmpty())
+    SnapmaticPicture *picture = smpic; // used by macro
+    QString crewIDStr = crewID; // save operation time
+    if (crewIDStr != "0" && !crewIDStr.isEmpty())
     {
-        return QString("<a href=\"https://socialclub.rockstargames.com/crew/" % QString(crewStr).replace(" ", "_") % "/" % crewID % "\">" % crewStr % "</a>");
+        return QString("<a href=\"https://socialclub.rockstargames.com/crew/" % QString(crewStr).replace(" ", "_") % "/" % crewIDStr % "\">" % crewStr % "</a>");
     }
     return tr("No Crew");
 }
 
 QString PictureDialog::generatePlayersString()
 {
+    SnapmaticPicture *picture = smpic; // used by macro
+    const QStringList playersList = plyrsList; // save operation time
     QString plyrsStr;
-    if (plyrsList.length() >= 1)
+    if (playersList.length() >= 1)
     {
-        for (QString player : plyrsList)
+        for (QString player : playersList)
         {
             QString playerName;
             if (withDatabase)
@@ -691,14 +695,15 @@ int PictureDialog::getIndex()
 
 void PictureDialog::openPreviewMap()
 {
+    SnapmaticPicture *picture = smpic;
     MapLocationDialog *mapLocDialog;
     if (rqFullscreen && fullscreenWidget != nullptr)
     {
-        mapLocDialog = new MapLocationDialog(smpic->getSnapmaticProperties().location.x, smpic->getSnapmaticProperties().location.y, fullscreenWidget);
+        mapLocDialog = new MapLocationDialog(picture->getSnapmaticProperties().location.x, picture->getSnapmaticProperties().location.y, fullscreenWidget);
     }
     else
     {
-        mapLocDialog = new MapLocationDialog(smpic->getSnapmaticProperties().location.x, smpic->getSnapmaticProperties().location.y, this);
+        mapLocDialog = new MapLocationDialog(picture->getSnapmaticProperties().location.x, picture->getSnapmaticProperties().location.y, this);
     }
     mapLocDialog->setWindowIcon(windowIcon());
     mapLocDialog->setModal(true);
@@ -707,25 +712,25 @@ void PictureDialog::openPreviewMap()
     if (mapLocDialog->propUpdated())
     {
         // Update Snapmatic Properties
-        SnapmaticProperties localSpJson = smpic->getSnapmaticProperties();
+        SnapmaticProperties localSpJson = picture->getSnapmaticProperties();
         localSpJson.location.x = mapLocDialog->getXpos();
         localSpJson.location.y = mapLocDialog->getYpos();
         localSpJson.location.z = 0;
 
         // Update Snapmatic Picture
-        QString currentFilePath = smpic->getPictureFilePath();
-        QString originalFilePath = smpic->getOriginalPictureFilePath();
+        QString currentFilePath = picture->getPictureFilePath();
+        QString originalFilePath = picture->getOriginalPictureFilePath();
         QString backupFileName = originalFilePath % ".bak";
         if (!QFile::exists(backupFileName))
         {
             QFile::copy(currentFilePath, backupFileName);
         }
-        SnapmaticProperties fallbackProperties = smpic->getSnapmaticProperties();
-        smpic->setSnapmaticProperties(localSpJson);
-        if (!smpic->exportPicture(currentFilePath))
+        SnapmaticProperties fallbackProperties = picture->getSnapmaticProperties();
+        picture->setSnapmaticProperties(localSpJson);
+        if (!picture->exportPicture(currentFilePath))
         {
             QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("Patching of Snapmatic Properties failed because of I/O Error"));
-            smpic->setSnapmaticProperties(fallbackProperties);
+            picture->setSnapmaticProperties(fallbackProperties);
         }
         else
         {
@@ -737,6 +742,7 @@ void PictureDialog::openPreviewMap()
 
 void PictureDialog::editSnapmaticProperties()
 {
+    SnapmaticPicture *picture = smpic;
     SnapmaticEditor *snapmaticEditor;
     if (rqFullscreen && fullscreenWidget != nullptr)
     {
@@ -746,29 +752,42 @@ void PictureDialog::editSnapmaticProperties()
     {
         snapmaticEditor = new SnapmaticEditor(crewDB, this);
     }
-    snapmaticEditor->setWindowFlags(snapmaticEditor->windowFlags()^Qt::WindowContextHelpButtonHint);
     snapmaticEditor->setWindowIcon(windowIcon());
-    snapmaticEditor->setSnapmaticPicture(smpic);
+    snapmaticEditor->setSnapmaticPicture(picture);
     snapmaticEditor->setModal(true);
+    snapmaticEditor->show();
     snapmaticEditor->exec();
     delete snapmaticEditor;
 }
 
+void PictureDialog::editSnapmaticRawJson()
+{
+    SnapmaticPicture *picture = smpic;
+    JsonEditorDialog *jsonEditor = new JsonEditorDialog(picture, this);
+    jsonEditor->setModal(true);
+    jsonEditor->show();
+    jsonEditor->exec();
+    delete jsonEditor;
+}
+
 void PictureDialog::updated()
 {
+    SnapmaticPicture *picture = smpic; // used by macro
     if (withDatabase)
     {
-        crewID = QString::number(smpic->getSnapmaticProperties().crewID);
-        crewStr = crewDB->getCrewName(smpic->getSnapmaticProperties().crewID);
+        crewStr = crewDB->getCrewName(crewID);
     }
     else
     {
-        crewID = QString::number(smpic->getSnapmaticProperties().crewID);
-        crewStr = QString::number(smpic->getSnapmaticProperties().crewID);
+        crewStr = crewID;
+    }
+    if (globalMap.contains(picArea))
+    {
+        picAreaStr = globalMap[picArea];
+    }
+    else
+    {
+        picAreaStr = picArea;
     }
-    locX = QString::number(smpic->getSnapmaticProperties().location.x);
-    locY = QString::number(smpic->getSnapmaticProperties().location.y);
-    locZ = QString::number(smpic->getSnapmaticProperties().location.z);
-    picTitl = StringParser::escapeString(smpic->getPictureTitle());
     ui->labJSON->setText(jsonDrawString.arg(locX, locY, locZ, generatePlayersString(), generateCrewString(), picTitl, picAreaStr, created));
 }
diff --git a/PictureDialog.h b/PictureDialog.h
index 6a02338..89d154e 100755
--- a/PictureDialog.h
+++ b/PictureDialog.h
@@ -69,6 +69,7 @@ private slots:
     void nextPictureRequestedSlot();
     void previousPictureRequestedSlot();
     void editSnapmaticProperties();
+    void editSnapmaticRawJson();
     void renderOverlayPicture();
     void renderPicture();
     void openPreviewMap();
@@ -100,23 +101,16 @@ private:
     QAction *pgtaExportAction;
     QAction *propEditorAction;
     QAction *openViewerAction;
+    QAction *jsonEditorAction;
     QAction *manageMenuSep1;
+    QAction *manageMenuSep2;
     QImage avatarAreaPicture;
     QImage snapmaticPicture;
     QImage overlayTempImage;
     QString jsonDrawString;
     QString windowTitleStr;
-    QStringList plyrsList;
     QString picAreaStr;
-    QString picArea;
-    QString picTitl;
-    QString picPath;
-    QString created;
     QString crewStr;
-    QString crewID;
-    QString locX;
-    QString locY;
-    QString locZ;
     bool overlayEnabled;
     bool withDatabase;
     bool rqFullscreen;
diff --git a/ProfileInterface.cpp b/ProfileInterface.cpp
index 88dbcdd..50ea5c5 100755
--- a/ProfileInterface.cpp
+++ b/ProfileInterface.cpp
@@ -54,6 +54,9 @@
 #include <QUrl>
 #include <QDir>
 
+#define importTimeFormat "HHmmss"
+#define findRetryLimit 500
+
 ProfileInterface::ProfileInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, QWidget *parent) :
     QWidget(parent), profileDB(profileDB), crewDB(crewDB), threadDB(threadDB),
     ui(new Ui::ProfileInterface)
@@ -446,7 +449,9 @@ fileDialogPreOpen: //Work?
         if (selectedFiles.length() == 1)
         {
             QString selectedFile = selectedFiles.at(0);
-            if (!importFile(selectedFile, true)) goto fileDialogPreOpen; //Work?
+            QDateTime importDateTime = QDateTime::currentDateTime();
+            int currentTime = importDateTime.toString(importTimeFormat).toInt();
+            if (!importFile(selectedFile, importDateTime, &currentTime, true)) goto fileDialogPreOpen; //Work?
         }
         else if (selectedFiles.length() > 1)
         {
@@ -486,13 +491,14 @@ void ProfileInterface::importFilesProgress(QStringList selectedFiles)
     pbBar.at(0)->setTextVisible(false);
     pbDialog.show();
 
-    QTime t;
-    t.start();
+    QDateTime importDateTime = QDateTime::currentDateTime();
+    int currentTime = importDateTime.time().toString(importTimeFormat).toInt();
     for (QString selectedFile : selectedFiles)
     {
         pbDialog.setValue(overallId);
         pbDialog.setLabelText(tr("Import file %1 of %2 files").arg(QString::number(overallId), QString::number(maximumId)));
-        if (!importFile(selectedFile, false))
+        importDateTime = QDateTime::currentDateTime();
+        if (!importFile(selectedFile, importDateTime, &currentTime, false))
         {
             failedFiles << QFileInfo(selectedFile).fileName();
         }
@@ -510,7 +516,7 @@ void ProfileInterface::importFilesProgress(QStringList selectedFiles)
     }
 }
 
-bool ProfileInterface::importFile(QString selectedFile, bool notMultiple)
+bool ProfileInterface::importFile(QString selectedFile, QDateTime importDateTime, int *currentTime, bool notMultiple)
 {
     QString selectedFileName = QFileInfo(selectedFile).fileName();
     if (QFile::exists(selectedFile))
@@ -590,7 +596,7 @@ bool ProfileInterface::importFile(QString selectedFile, bool notMultiple)
                             diffWidth = diffWidth / 2;
                         }
                         snapmaticPainter.drawImage(145 + diffWidth, 66 + diffHeight, snapmaticImage);
-                        customImageTitle = "Custom Avatar";
+                        customImageTitle = ImportDialog::tr("Custom Avatar", "Custom Avatar Description in SC, don't use Special Character!");
                     }
                     else
                     {
@@ -609,7 +615,7 @@ bool ProfileInterface::importFile(QString selectedFile, bool notMultiple)
                             diffHeight = diffHeight / 2;
                         }
                         snapmaticPainter.drawImage(0 + diffWidth, 0 + diffHeight, snapmaticImage);
-                        customImageTitle = "Custom Picture";
+                        customImageTitle = ImportDialog::tr("Custom Picture", "Custom Picture Description in SC, don't use Special Character!");
                     }
                     snapmaticPainter.end();
                     if (!picture->setImage(snapmaticPixmap.toImage()))
@@ -617,23 +623,22 @@ bool ProfileInterface::importFile(QString selectedFile, bool notMultiple)
                         delete picture;
                         return false;
                     }
-                    QString currentTime = QTime::currentTime().toString("HHmmss");
                     SnapmaticProperties spJson = picture->getSnapmaticProperties();
-                    spJson.uid = QString(currentTime %
-                                         QString::number(QDate::currentDate().dayOfYear())).toInt();
+                    spJson.uid = QString(QString::number(*currentTime) %
+                                         QString::number(importDateTime.date().dayOfYear())).toInt();
                     bool fExists = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid));
                     bool fExistsHidden = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid) % ".hidden");
                     int cEnough = 0;
-                    while ((fExists || fExistsHidden) && cEnough < 5000)
+                    while ((fExists || fExistsHidden) && cEnough < findRetryLimit)
                     {
-                        currentTime = QString::number(currentTime.toInt() - 1);
-                        spJson.uid = QString(currentTime %
-                                             QString::number(QDate::currentDate().dayOfYear())).toInt();
+                        *currentTime = *currentTime - 1;
+                        spJson.uid = QString(QString::number(*currentTime) %
+                                             QString::number(importDateTime.date().dayOfYear())).toInt();
                         fExists = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid));
                         fExistsHidden = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid) % ".hidden");
                         cEnough++;
                     }
-                    spJson.createdDateTime = QDateTime::currentDateTime();
+                    spJson.createdDateTime = importDateTime;
                     spJson.createdTimestamp = spJson.createdDateTime.toTime_t();
                     picture->setSnapmaticProperties(spJson);
                     picture->setPicFileName(QString("PGTA5%1").arg(QString::number(spJson.uid)));
@@ -672,23 +677,22 @@ bool ProfileInterface::importFile(QString selectedFile, bool notMultiple)
                     {
                         if (picture->setImage(importDialog->image()))
                         {
-                            QString currentTime = QTime::currentTime().toString("HHmmss");
                             SnapmaticProperties spJson = picture->getSnapmaticProperties();
-                            spJson.uid = QString(currentTime +
-                                                 QString::number(QDate::currentDate().dayOfYear())).toInt();
+                            spJson.uid = QString(QString::number(*currentTime) %
+                                                 QString::number(importDateTime.date().dayOfYear())).toInt();
                             bool fExists = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid));
                             bool fExistsHidden = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid) % ".hidden");
                             int cEnough = 0;
-                            while ((fExists || fExistsHidden) && cEnough < 25)
+                            while ((fExists || fExistsHidden) && cEnough < findRetryLimit)
                             {
-                                currentTime = QString::number(currentTime.toInt() - 1);
-                                spJson.uid = QString(currentTime %
-                                                     QString::number(QDate::currentDate().dayOfYear())).toInt();
+                                *currentTime = *currentTime - 1;
+                                spJson.uid = QString(QString::number(*currentTime) %
+                                                     QString::number(importDateTime.date().dayOfYear())).toInt();
                                 fExists = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid));
                                 fExistsHidden = QFile::exists(profileFolder % "/PGTA5" % QString::number(spJson.uid) % ".hidden");
                                 cEnough++;
                             }
-                            spJson.createdDateTime = QDateTime::currentDateTime();
+                            spJson.createdDateTime = importDateTime;
                             spJson.createdTimestamp = spJson.createdDateTime.toTime_t();
                             picture->setSnapmaticProperties(spJson);
                             picture->setPicFileName(QString("PGTA5%1").arg(QString::number(spJson.uid)));
@@ -1158,6 +1162,9 @@ void ProfileInterface::contextMenuTriggeredPIC(QContextMenuEvent *ev)
         editMenu.addAction(SnapmaticWidget::tr("Hide &In-game"), picWidget, SLOT(makePictureHiddenSlot()));
     }
     editMenu.addAction(PictureDialog::tr("&Edit Properties..."), picWidget, SLOT(editSnapmaticProperties()));
+    editMenu.addSeparator();
+    editMenu.addAction(PictureDialog::tr("Open &Map Viewer..."), picWidget, SLOT(openMapViewer()));
+    editMenu.addAction(PictureDialog::tr("Open &JSON Editor..."), picWidget, SLOT(editSnapmaticRawJson()));
     QMenu exportMenu(SnapmaticWidget::tr("&Export"), this);
     exportMenu.addAction(PictureDialog::tr("Export as &Picture..."), picWidget, SLOT(on_cmdExport_clicked()));
     exportMenu.addAction(PictureDialog::tr("Export as &Snapmatic..."), picWidget, SLOT(on_cmdCopy_clicked()));
@@ -1231,7 +1238,9 @@ void ProfileInterface::on_saProfileContent_dropped(const QMimeData *mimeData)
     if (pathList.length() == 1)
     {
         QString selectedFile = pathList.at(0);
-        importFile(selectedFile, true);
+        QDateTime importDateTime = QDateTime::currentDateTime();
+        int currentTime = importDateTime.toString(importTimeFormat).toInt();
+        importFile(selectedFile, QDateTime::currentDateTime(), &currentTime, true);
     }
     else if (pathList.length() > 1)
     {
diff --git a/ProfileInterface.h b/ProfileInterface.h
index f93297c..8ccf76b 100755
--- a/ProfileInterface.h
+++ b/ProfileInterface.h
@@ -31,6 +31,7 @@
 #include "CrewDatabase.h"
 #include <QProgressDialog>
 #include <QSpacerItem>
+#include <QDateTime>
 #include <QWidget>
 #include <QList>
 #include <QMap>
@@ -107,7 +108,7 @@ private:
     int contentMode;
 
     bool isSupportedImageFile(QString selectedFileName);
-    bool importFile(QString selectedFile, bool notMultiple);
+    bool importFile(QString selectedFile, QDateTime importDateTime, int *currentTime, bool notMultiple);
     void importFilesProgress(QStringList selectedFiles);
     bool importSnapmaticPicture(SnapmaticPicture *picture, bool warn = true);
     bool importSavegameData(SavegameData *savegame, QString sgdPath, bool warn = true);
diff --git a/SnapmaticEditor.cpp b/SnapmaticEditor.cpp
index 619e855..768013a 100644
--- a/SnapmaticEditor.cpp
+++ b/SnapmaticEditor.cpp
@@ -32,13 +32,24 @@ SnapmaticEditor::SnapmaticEditor(CrewDatabase *crewDB, QWidget *parent) :
     QDialog(parent), crewDB(crewDB),
     ui(new Ui::SnapmaticEditor)
 {
+    // Set Window Flags
+    setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint);
+
     ui->setupUi(this);
     ui->cmdApply->setDefault(true);
 
-    if (QIcon::hasThemeIcon("dialog-apply"))
+    if (QIcon::hasThemeIcon("dialog-ok-apply"))
+    {
+        ui->cmdApply->setIcon(QIcon::fromTheme("dialog-ok-apply"));
+    }
+    else if (QIcon::hasThemeIcon("dialog-apply"))
     {
         ui->cmdApply->setIcon(QIcon::fromTheme("dialog-apply"));
     }
+    else if (QIcon::hasThemeIcon("dialog-ok"))
+    {
+        ui->cmdApply->setIcon(QIcon::fromTheme("dialog-ok"));
+    }
     if (QIcon::hasThemeIcon("dialog-cancel"))
     {
         ui->cmdCancel->setIcon(QIcon::fromTheme("dialog-cancel"));
diff --git a/SnapmaticPicture.cpp b/SnapmaticPicture.cpp
index e1ca220..4d9147e 100755
--- a/SnapmaticPicture.cpp
+++ b/SnapmaticPicture.cpp
@@ -774,60 +774,119 @@ void SnapmaticPicture::parseJsonContent()
 {
     QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonStr.toUtf8());
     QJsonObject jsonObject = jsonDocument.object();
-    QVariantMap jsonMap = jsonObject.toVariantMap(); // backward compatibility
+    QVariantMap jsonMap = jsonObject.toVariantMap();
 
+    bool jsonIncomplete = false;
+    bool jsonError = false;
     if (jsonObject.contains("loc"))
     {
-        QJsonObject locObject = jsonObject["loc"].toObject();
-        if (locObject.contains("x")) { localSpJson.location.x = locObject["x"].toDouble(); }
-        if (locObject.contains("y")) { localSpJson.location.y = locObject["y"].toDouble(); }
-        if (locObject.contains("z")) { localSpJson.location.z = locObject["z"].toDouble(); }
+        if (jsonObject["loc"].isObject())
+        {
+            QJsonObject locObject = jsonObject["loc"].toObject();
+            if (locObject.contains("x"))
+            {
+                if (locObject["x"].isDouble()) { localSpJson.location.x = locObject["x"].toDouble(); }
+                else { jsonError = true; }
+            }
+            else { jsonIncomplete = true; }
+            if (locObject.contains("y"))
+            {
+                if (locObject["y"].isDouble()) { localSpJson.location.y = locObject["y"].toDouble(); }
+                else { jsonError = true; }
+            }
+            else { jsonIncomplete = true; }
+            if (locObject.contains("z"))
+            {
+                if (locObject["z"].isDouble()) { localSpJson.location.z = locObject["z"].toDouble(); }
+                else { jsonError = true; }
+            }
+            else { jsonIncomplete = true; }
+        }
+        else { jsonError = true; }
     }
+    else { jsonIncomplete = true; }
     if (jsonObject.contains("uid"))
     {
-        localSpJson.uid = jsonObject["uid"].toInt();
+        bool uidOk;
+        localSpJson.uid = jsonMap["uid"].toInt(&uidOk);
+        if (!uidOk) { jsonError = true; }
     }
+    else { jsonIncomplete = true; }
     if (jsonObject.contains("area"))
     {
-        localSpJson.location.area = jsonObject["area"].toString();
+        if (jsonObject["area"].isString()) { localSpJson.location.area = jsonObject["area"].toString(); }
+        else { jsonError = true; }
     }
+    else { jsonIncomplete = true; }
     if (jsonObject.contains("crewid"))
     {
-        localSpJson.crewID = jsonObject["crewid"].toInt();
+        bool crewIDOk;
+        localSpJson.crewID = jsonMap["crewid"].toInt(&crewIDOk);
+        if (!crewIDOk) { jsonError = true; }
     }
+    else { jsonIncomplete = true; }
+    if (jsonObject.contains("street"))
+    {
+        bool streetIDOk;
+        localSpJson.streetID = jsonMap["street"].toInt(&streetIDOk);
+        if (!streetIDOk) { jsonError = true; }
+    }
+    else { jsonIncomplete = true; }
     if (jsonObject.contains("creat"))
     {
+        bool timestampOk;
         QDateTime createdTimestamp;
-        localSpJson.createdTimestamp = jsonMap["creat"].toUInt();
+        localSpJson.createdTimestamp = jsonMap["creat"].toUInt(&timestampOk);
         createdTimestamp.setTime_t(localSpJson.createdTimestamp);
         localSpJson.createdDateTime = createdTimestamp;
+        if (!timestampOk) { jsonError = true; }
     }
+    else { jsonIncomplete = true; }
     if (jsonObject.contains("plyrs"))
     {
-        localSpJson.playersList = jsonMap["plyrs"].toStringList();
+        if (jsonObject["plyrs"].isArray()) { localSpJson.playersList = jsonMap["plyrs"].toStringList(); }
+        else { jsonError = true; }
     }
+    else { jsonIncomplete = true; }
     if (jsonObject.contains("meme"))
     {
-        localSpJson.isMeme = jsonObject["meme"].toBool();
+        if (jsonObject["meme"].isBool()) { localSpJson.isMeme = jsonObject["meme"].toBool(); }
+        else { jsonError = true; }
     }
+    else { jsonIncomplete = true; }
     if (jsonObject.contains("mug"))
     {
-        localSpJson.isMug = jsonObject["mug"].toBool();
+        if (jsonObject["mug"].isBool()) { localSpJson.isMug = jsonObject["mug"].toBool(); }
+        else { jsonError = true; }
     }
+    else { jsonIncomplete = true; }
     if (jsonObject.contains("slf"))
     {
-        localSpJson.isSelfie = jsonObject["slf"].toBool();
+        if (jsonObject["slf"].isBool()) { localSpJson.isSelfie = jsonObject["slf"].toBool(); }
+        else { jsonError = true; }
     }
+    else { jsonIncomplete = true; }
     if (jsonObject.contains("drctr"))
     {
-        localSpJson.isFromDirector = jsonObject["drctr"].toBool();
+        if (jsonObject["drctr"].isBool()) { localSpJson.isFromDirector = jsonObject["drctr"].toBool(); }
+        else { jsonError = true; }
     }
+    else { jsonIncomplete = true; }
     if (jsonObject.contains("rsedtr"))
     {
-        localSpJson.isFromRSEditor = jsonObject["rsedtr"].toBool();
+        if (jsonObject["rsedtr"].isBool()) { localSpJson.isFromRSEditor = jsonObject["rsedtr"].toBool(); }
+        else { jsonError = true; }
     }
+    else { jsonIncomplete = true; }
 
-    jsonOk = true;
+    if (!jsonIncomplete && !jsonError)
+    {
+        jsonOk = true;
+    }
+    else
+    {
+        jsonOk = false;
+    }
 }
 
 bool SnapmaticPicture::setSnapmaticProperties(SnapmaticProperties newSpJson)
@@ -844,6 +903,7 @@ bool SnapmaticPicture::setSnapmaticProperties(SnapmaticProperties newSpJson)
     jsonObject["uid"] = newSpJson.uid;
     jsonObject["area"] = newSpJson.location.area;
     jsonObject["crewid"] = newSpJson.crewID;
+    jsonObject["street"] = newSpJson.streetID;
     jsonObject["creat"] = QJsonValue::fromVariant(newSpJson.createdTimestamp);
     jsonObject["plyrs"] = QJsonValue::fromVariant(newSpJson.playersList);
     jsonObject["meme"] = newSpJson.isMeme;
@@ -862,7 +922,7 @@ bool SnapmaticPicture::setSnapmaticProperties(SnapmaticProperties newSpJson)
     return false;
 }
 
-bool SnapmaticPicture::setJsonStr(const QString &newJsonStr)
+bool SnapmaticPicture::setJsonStr(const QString &newJsonStr, bool updateProperties)
 {
     if (newJsonStr.length() < jsonStreamEditorLength)
     {
@@ -887,6 +947,7 @@ bool SnapmaticPicture::setJsonStr(const QString &newJsonStr)
             {
                 jsonStr = newJsonStr;
                 if (lowRamMode) { rawPicContent = qCompress(rawPicContent, 9); }
+                if (updateProperties) { parseJsonContent(); }
                 return true;
             }
             else
diff --git a/SnapmaticPicture.h b/SnapmaticPicture.h
index e0db134..206a9ec 100755
--- a/SnapmaticPicture.h
+++ b/SnapmaticPicture.h
@@ -37,6 +37,7 @@ struct SnapmaticProperties {
     };
     int uid;
     int crewID;
+    int streetID;
     QStringList playersList;
     uint createdTimestamp;
     QDateTime createdDateTime;
@@ -96,7 +97,7 @@ public:
     QString getJsonStr();
     SnapmaticProperties getSnapmaticProperties();
     bool setSnapmaticProperties(SnapmaticProperties newSpJson);
-    bool setJsonStr(const QString &jsonStr);
+    bool setJsonStr(const QString &jsonStr, bool updateProperties = false);
 
     // VISIBILITY
     bool isHidden();
diff --git a/SnapmaticWidget.cpp b/SnapmaticWidget.cpp
index dd5ca98..789c2e9 100755
--- a/SnapmaticWidget.cpp
+++ b/SnapmaticWidget.cpp
@@ -18,6 +18,8 @@
 
 #include "SnapmaticWidget.h"
 #include "ui_SnapmaticWidget.h"
+#include "MapLocationDialog.h"
+#include "JsonEditorDialog.h"
 #include "SnapmaticPicture.h"
 #include "SnapmaticEditor.h"
 #include "DatabaseThread.h"
@@ -283,13 +285,57 @@ void SnapmaticWidget::makePictureVisibleSlot()
 void SnapmaticWidget::editSnapmaticProperties()
 {
     SnapmaticEditor *snapmaticEditor = new SnapmaticEditor(crewDB, this);
-    snapmaticEditor->setWindowFlags(snapmaticEditor->windowFlags()^Qt::WindowContextHelpButtonHint);
     snapmaticEditor->setSnapmaticPicture(smpic);
     snapmaticEditor->setModal(true);
+    snapmaticEditor->show();
     snapmaticEditor->exec();
     delete snapmaticEditor;
 }
 
+void SnapmaticWidget::editSnapmaticRawJson()
+{
+    JsonEditorDialog *jsonEditor = new JsonEditorDialog(smpic, this);
+    jsonEditor->setModal(true);
+    jsonEditor->show();
+    jsonEditor->exec();
+    delete jsonEditor;
+}
+
+void SnapmaticWidget::openMapViewer()
+{
+    SnapmaticPicture *picture = smpic;
+    MapLocationDialog *mapLocDialog;
+    mapLocDialog = new MapLocationDialog(picture->getSnapmaticProperties().location.x, picture->getSnapmaticProperties().location.y, this);
+    mapLocDialog->setModal(true);
+    mapLocDialog->show();
+    mapLocDialog->exec();
+    if (mapLocDialog->propUpdated())
+    {
+        // Update Snapmatic Properties
+        SnapmaticProperties localSpJson = picture->getSnapmaticProperties();
+        localSpJson.location.x = mapLocDialog->getXpos();
+        localSpJson.location.y = mapLocDialog->getYpos();
+        localSpJson.location.z = 0;
+
+        // Update Snapmatic Picture
+        QString currentFilePath = picture->getPictureFilePath();
+        QString originalFilePath = picture->getOriginalPictureFilePath();
+        QString backupFileName = originalFilePath % ".bak";
+        if (!QFile::exists(backupFileName))
+        {
+            QFile::copy(currentFilePath, backupFileName);
+        }
+        SnapmaticProperties fallbackProperties = picture->getSnapmaticProperties();
+        picture->setSnapmaticProperties(localSpJson);
+        if (!picture->exportPicture(currentFilePath))
+        {
+            QMessageBox::warning(this, SnapmaticEditor::tr("Snapmatic Properties"), SnapmaticEditor::tr("Patching of Snapmatic Properties failed because of I/O Error"));
+            picture->setSnapmaticProperties(fallbackProperties);
+        }
+    }
+    delete mapLocDialog;
+}
+
 bool SnapmaticWidget::isSelected()
 {
     return ui->cbSelected->isChecked();
diff --git a/SnapmaticWidget.h b/SnapmaticWidget.h
index 9a7b3f3..bc5b087 100755
--- a/SnapmaticWidget.h
+++ b/SnapmaticWidget.h
@@ -68,6 +68,8 @@ private slots:
     void makePictureVisibleSlot();
     void makePictureHiddenSlot();
     void editSnapmaticProperties();
+    void editSnapmaticRawJson();
+    void openMapViewer();
     void snapmaticUpdated();
 
 protected:
diff --git a/anpro/JSHighlighter.cpp b/anpro/JSHighlighter.cpp
new file mode 100644
index 0000000..6d3b93c
--- /dev/null
+++ b/anpro/JSHighlighter.cpp
@@ -0,0 +1,72 @@
+/*****************************************************************************
+* gta5sync GRAND THEFT AUTO V SYNC
+* Copyright (C) 2017 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
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*****************************************************************************/
+
+#include "JSHighlighter.h"
+#include <QRegExp>
+
+JSHighlighter::JSHighlighter(QTextDocument *parent) :
+    QSyntaxHighlighter(parent)
+{
+    HighlightingRule rule;
+
+    QBrush keywordBrush(QColor::fromRgb(66, 137, 244));
+    keywordFormat.setForeground(keywordBrush);
+    keywordFormat.setFontItalic(true);
+    QStringList keywordPatterns;
+    keywordPatterns << "\\btrue\\b" << "\\bfalse\\b";
+    for (QString pattern : keywordPatterns)
+    {
+        rule.pattern = QRegExp(pattern);
+        rule.format = keywordFormat;
+        highlightingRules.append(rule);
+    }
+
+    QBrush doubleBrush(QColor::fromRgb(66, 137, 244));
+    doubleFormat.setForeground(doubleBrush);
+    rule.pattern = QRegExp("[+-]?\\d*\\.?\\d+");
+    rule.format = doubleFormat;
+    highlightingRules.append(rule);
+
+    QBrush quotationBrush(QColor::fromRgb(66, 244, 104));
+    quotationFormat.setForeground(quotationBrush);
+    rule.pattern = QRegExp("\"[^\"]*\"");
+    rule.format = quotationFormat;
+    highlightingRules.append(rule);
+
+    QBrush objectBrush(QColor::fromRgb(255, 80, 80));
+    objectFormat.setForeground(objectBrush);
+    rule.pattern = QRegExp("\"[^\"]*\"(?=:)");
+    rule.format = objectFormat;
+    highlightingRules.append(rule);
+}
+
+void JSHighlighter::highlightBlock(const QString &text)
+{
+    for (HighlightingRule rule : highlightingRules)
+    {
+        QRegExp expression(rule.pattern);
+        int index = expression.indexIn(text);
+        while (index >= 0)
+        {
+            int length = expression.matchedLength();
+            setFormat(index, length, rule.format);
+            index = expression.indexIn(text, index + length);
+        }
+    }
+    setCurrentBlockState(0);
+}
diff --git a/anpro/JSHighlighter.h b/anpro/JSHighlighter.h
new file mode 100644
index 0000000..08a0eb5
--- /dev/null
+++ b/anpro/JSHighlighter.h
@@ -0,0 +1,56 @@
+/*****************************************************************************
+* gta5sync GRAND THEFT AUTO V SYNC
+* Copyright (C) 2017 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
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*****************************************************************************/
+
+#ifndef JSHIGHLIGHTER_H
+#define JSHIGHLIGHTER_H
+
+#include <QSyntaxHighlighter>
+#include <QTextCharFormat>
+#include <QTextDocument>
+#include <QTextFormat>
+#include <QStringList>
+#include <QRegExp>
+#include <QVector>
+#include <QHash>
+
+class QTextDocument;
+
+class JSHighlighter : public QSyntaxHighlighter
+{
+    Q_OBJECT
+
+public:
+    struct HighlightingRule
+    {
+        QRegExp pattern;
+        QTextCharFormat format;
+    };
+    QVector<HighlightingRule> highlightingRules;
+
+    QTextCharFormat keywordFormat;
+    QTextCharFormat doubleFormat;
+    QTextCharFormat quotationFormat;
+    QTextCharFormat objectFormat;
+
+    JSHighlighter(QTextDocument *parent = 0);
+
+protected:
+    void highlightBlock(const QString &text) override;
+};
+
+#endif // JSHIGHLIGHTER_H
diff --git a/config.h b/config.h
index f43dc83..0848287 100755
--- a/config.h
+++ b/config.h
@@ -50,7 +50,7 @@
 
 #ifndef GTA5SYNC_APPVER
 #ifndef GTA5SYNC_DAILYB
-#define GTA5SYNC_APPVER "1.5.0-dev3"
+#define GTA5SYNC_APPVER "1.5.0-dev4"
 #else
 #define GTA5SYNC_APPVER GTA5SYNC_DAILYB
 #endif
diff --git a/gta5view.pro b/gta5view.pro
index 9d7ec08..61fb0d4 100755
--- a/gta5view.pro
+++ b/gta5view.pro
@@ -38,6 +38,7 @@ SOURCES += main.cpp \
     GlobalString.cpp \
     IconLoader.cpp \
     ImportDialog.cpp \
+    JsonEditorDialog.cpp \
     MapLocationDialog.cpp \
     OptionsDialog.cpp \
     PictureDialog.cpp \
@@ -59,6 +60,7 @@ SOURCES += main.cpp \
     StringParser.cpp \
     TranslationClass.cpp \
     UserInterface.cpp \
+    anpro/JSHighlighter.cpp \
     uimod/UiModLabel.cpp \
     uimod/UiModWidget.cpp
 
@@ -72,6 +74,7 @@ HEADERS  += \
     GlobalString.h \
     IconLoader.h \
     ImportDialog.h \
+    JsonEditorDialog.h \
     MapLocationDialog.h \
     OptionsDialog.h \
     PictureDialog.h \
@@ -93,6 +96,7 @@ HEADERS  += \
     StringParser.h \
     TranslationClass.h \
     UserInterface.h \
+    anpro/JSHighlighter.h \
     uimod/UiModLabel.h \
     uimod/UiModWidget.h
 
@@ -100,6 +104,7 @@ FORMS    += \
     AboutDialog.ui \
     ExportDialog.ui \
     ImportDialog.ui \
+    JsonEditorDialog.ui \
     MapLocationDialog.ui \
     OptionsDialog.ui \
     PictureDialog.ui \
@@ -131,7 +136,7 @@ DISTFILES += res/app.rc \
     lang/gta5sync_no.ts \
     lang/README.txt
 
-INCLUDEPATH += ./uimod
+INCLUDEPATH += ./anpro ./uimod
 
 # GTA5SYNC/GTA5VIEW ONLY
 
diff --git a/lang/gta5sync_no.ts b/lang/gta5sync_no.ts
index 81a61d4..c6a588e 100644
--- a/lang/gta5sync_no.ts
+++ b/lang/gta5sync_no.ts
@@ -114,6 +114,7 @@ Pictures and Savegames</source>
     <name>CrewDatabase</name>
     <message>
         <location filename="../CrewDatabase.cpp" line="102"/>
+        <location filename="../CrewDatabase.cpp" line="113"/>
         <source>No Crew</source>
         <translation type="unfinished"></translation>
     </message>
@@ -196,7 +197,7 @@ Pictures and Savegames</source>
     <message>
         <location filename="../ImportDialog.ui" line="98"/>
         <location filename="../ImportDialog.cpp" line="57"/>
-        <location filename="../ImportDialog.cpp" line="216"/>
+        <location filename="../ImportDialog.cpp" line="242"/>
         <source>Background Colour: &lt;span style=&quot;color: %1&quot;&gt;%1&lt;/span&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -236,29 +237,93 @@ Pictures and Savegames</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ImportDialog.cpp" line="173"/>
+        <location filename="../ImportDialog.cpp" line="105"/>
+        <location filename="../ProfileInterface.cpp" line="599"/>
+        <source>Custom Avatar</source>
+        <comment>Custom Avatar Description in SC, don&apos;t use Special Character!</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ImportDialog.cpp" line="131"/>
+        <location filename="../ProfileInterface.cpp" line="618"/>
+        <source>Custom Picture</source>
+        <comment>Custom Picture Description in SC, don&apos;t use Special Character!</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ImportDialog.cpp" line="199"/>
         <source>Are you sure to use a square image outside of the Avatar Zone?
 When you want to use it as Avatar the image will be detached!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ImportDialog.cpp" line="173"/>
+        <location filename="../ImportDialog.cpp" line="199"/>
         <source>Snapmatic Avatar Zone</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ImportDialog.cpp" line="212"/>
+        <location filename="../ImportDialog.cpp" line="238"/>
         <source>Select Colour...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>MapPreviewDialog</name>
+    <name>JsonEditorDialog</name>
     <message>
-        <location filename="../MapPreviewDialog.ui" line="26"/>
+        <location filename="../JsonEditorDialog.ui" line="14"/>
+        <source>Snapmatic JSON Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.ui" line="107"/>
+        <source>&amp;Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.ui" line="114"/>
+        <source>&amp;Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MapLocationDialog</name>
+    <message>
+        <location filename="../MapLocationDialog.ui" line="26"/>
         <source>Snapmatic Map Viewer</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../MapLocationDialog.ui" line="138"/>
+        <source>&amp;Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../MapLocationDialog.ui" line="164"/>
+        <source>&amp;Apply</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../MapLocationDialog.ui" line="177"/>
+        <source>&amp;Revert</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../MapLocationDialog.ui" line="190"/>
+        <source>&amp;Set</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../MapLocationDialog.ui" line="203"/>
+        <source>&amp;Done</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../MapLocationDialog.cpp" line="90"/>
+        <source>X: %1
+Y: %2</source>
+        <comment>X and Y position</comment>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>OptionsDialog</name>
@@ -395,75 +460,129 @@ When you want to use it as Avatar the image will be detached!</source>
     </message>
     <message>
         <location filename="../OptionsDialog.ui" line="387"/>
-        <location filename="../OptionsDialog.ui" line="393"/>
-        <source>Language</source>
+        <source>Interface</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="419"/>
+        <location filename="../OptionsDialog.ui" line="393"/>
+        <source>Language for Interface</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="402"/>
+        <location filename="../OptionsDialog.ui" line="421"/>
+        <location filename="../OptionsDialog.cpp" line="169"/>
+        <location filename="../OptionsDialog.cpp" line="217"/>
+        <source>Current: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="412"/>
+        <source>Language for Areas</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="431"/>
+        <source>Style</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="437"/>
+        <source>Use Default Style (Restart)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="449"/>
+        <source>Style:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="474"/>
+        <source>Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="480"/>
+        <source>Always use Message Font (Windows 2003 and earlier)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="504"/>
         <source>Sync</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="425"/>
+        <location filename="../OptionsDialog.ui" line="510"/>
         <source>Sync is not implemented at current time</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="463"/>
+        <location filename="../OptionsDialog.ui" line="548"/>
         <source>Apply changes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="466"/>
+        <location filename="../OptionsDialog.ui" line="551"/>
         <source>&amp;OK</source>
         <extracomment>OK, Cancel, Apply</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="479"/>
+        <location filename="../OptionsDialog.ui" line="564"/>
         <source>Discard changes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="482"/>
+        <location filename="../OptionsDialog.ui" line="567"/>
         <source>&amp;Cancel</source>
         <extracomment>OK, Cancel, Apply</extracomment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="132"/>
+        <location filename="../OptionsDialog.cpp" line="133"/>
         <source>%1 (Next Closest Language)</source>
         <comment>First language a person can talk with a different person/application. &quot;Native&quot; or &quot;Not Native&quot;.</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="132"/>
+        <location filename="../OptionsDialog.cpp" line="133"/>
         <source>System</source>
         <comment>System in context of System default</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="274"/>
+        <location filename="../OptionsDialog.cpp" line="135"/>
+        <source>%1 (Closest to Interface)</source>
+        <comment>Next closest language compared to the Interface</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.cpp" line="135"/>
+        <source>Auto</source>
+        <comment>Automatic language choice.</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.cpp" line="408"/>
         <source>%1</source>
         <comment>%1</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="274"/>
+        <location filename="../OptionsDialog.cpp" line="408"/>
         <source>The new Custom Folder will initialise after you restart %1.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="284"/>
+        <location filename="../OptionsDialog.cpp" line="418"/>
         <source>No Profile</source>
         <comment>No Profile, as default</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="292"/>
-        <location filename="../OptionsDialog.cpp" line="296"/>
-        <location filename="../OptionsDialog.cpp" line="298"/>
+        <location filename="../OptionsDialog.cpp" line="426"/>
+        <location filename="../OptionsDialog.cpp" line="430"/>
+        <location filename="../OptionsDialog.cpp" line="432"/>
         <source>Profile: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -504,66 +623,73 @@ When you want to use it as Avatar the image will be detached!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="145"/>
-        <location filename="../ProfileInterface.cpp" line="1160"/>
+        <location filename="../PictureDialog.cpp" line="148"/>
+        <location filename="../ProfileInterface.cpp" line="1169"/>
         <source>Export as &amp;Picture...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="146"/>
-        <location filename="../ProfileInterface.cpp" line="1161"/>
+        <location filename="../PictureDialog.cpp" line="149"/>
+        <location filename="../ProfileInterface.cpp" line="1170"/>
         <source>Export as &amp;Snapmatic...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="148"/>
-        <source>Open &amp;Map View...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../PictureDialog.cpp" line="150"/>
-        <location filename="../ProfileInterface.cpp" line="1158"/>
+        <location filename="../PictureDialog.cpp" line="151"/>
+        <location filename="../ProfileInterface.cpp" line="1164"/>
         <source>&amp;Edit Properties...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="373"/>
+        <location filename="../PictureDialog.cpp" line="153"/>
+        <location filename="../ProfileInterface.cpp" line="1166"/>
+        <source>Open &amp;Map Viewer...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PictureDialog.cpp" line="155"/>
+        <location filename="../ProfileInterface.cpp" line="1167"/>
+        <source>Open &amp;JSON Editor...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PictureDialog.cpp" line="380"/>
         <source>Key 1 - Avatar Preview Mode
 Key 2 - Toggle Overlay
 Arrow Keys - Navigate</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="433"/>
-        <location filename="../PictureDialog.cpp" line="476"/>
+        <location filename="../PictureDialog.cpp" line="439"/>
+        <location filename="../PictureDialog.cpp" line="473"/>
         <source>Snapmatic Picture Viewer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="433"/>
-        <location filename="../PictureDialog.cpp" line="476"/>
+        <location filename="../PictureDialog.cpp" line="439"/>
+        <location filename="../PictureDialog.cpp" line="473"/>
         <source>Failed at %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="475"/>
-        <location filename="../PictureDialog.cpp" line="589"/>
+        <location filename="../PictureDialog.cpp" line="472"/>
+        <location filename="../PictureDialog.cpp" line="591"/>
         <source>No Crew</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="475"/>
+        <location filename="../PictureDialog.cpp" line="472"/>
         <source>Unknown Location</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="475"/>
-        <location filename="../PictureDialog.cpp" line="614"/>
+        <location filename="../PictureDialog.cpp" line="472"/>
+        <location filename="../PictureDialog.cpp" line="618"/>
         <source>No Players</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="560"/>
+        <location filename="../PictureDialog.cpp" line="557"/>
         <source>Avatar Preview Mode
 Press 1 for Default View</source>
         <translation type="unfinished"></translation>
@@ -717,212 +843,212 @@ Press 1 for Default View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="65"/>
+        <location filename="../ProfileInterface.cpp" line="68"/>
         <source>Enabled pictures: %1 of %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="129"/>
+        <location filename="../ProfileInterface.cpp" line="134"/>
         <source>Loading...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="411"/>
-        <location filename="../ProfileInterface.cpp" line="476"/>
+        <location filename="../ProfileInterface.cpp" line="416"/>
+        <location filename="../ProfileInterface.cpp" line="483"/>
         <source>Import...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="412"/>
-        <location filename="../ProfileInterface.cpp" line="455"/>
-        <location filename="../ProfileInterface.cpp" line="507"/>
-        <location filename="../ProfileInterface.cpp" line="527"/>
-        <location filename="../ProfileInterface.cpp" line="543"/>
-        <location filename="../ProfileInterface.cpp" line="659"/>
-        <location filename="../ProfileInterface.cpp" line="740"/>
-        <location filename="../ProfileInterface.cpp" line="745"/>
-        <location filename="../ProfileInterface.cpp" line="755"/>
-        <location filename="../ProfileInterface.cpp" line="760"/>
-        <location filename="../ProfileInterface.cpp" line="771"/>
-        <location filename="../ProfileInterface.cpp" line="808"/>
+        <location filename="../ProfileInterface.cpp" line="417"/>
+        <location filename="../ProfileInterface.cpp" line="462"/>
+        <location filename="../ProfileInterface.cpp" line="515"/>
+        <location filename="../ProfileInterface.cpp" line="535"/>
+        <location filename="../ProfileInterface.cpp" line="551"/>
+        <location filename="../ProfileInterface.cpp" line="666"/>
+        <location filename="../ProfileInterface.cpp" line="746"/>
+        <location filename="../ProfileInterface.cpp" line="751"/>
+        <location filename="../ProfileInterface.cpp" line="761"/>
+        <location filename="../ProfileInterface.cpp" line="766"/>
+        <location filename="../ProfileInterface.cpp" line="777"/>
         <location filename="../ProfileInterface.cpp" line="814"/>
+        <location filename="../ProfileInterface.cpp" line="820"/>
         <source>Import</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="428"/>
-        <location filename="../UserInterface.cpp" line="364"/>
+        <location filename="../ProfileInterface.cpp" line="433"/>
+        <location filename="../UserInterface.cpp" line="375"/>
         <source>GTA V Export (*.g5e)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="429"/>
-        <location filename="../UserInterface.cpp" line="365"/>
+        <location filename="../ProfileInterface.cpp" line="434"/>
+        <location filename="../UserInterface.cpp" line="376"/>
         <source>Savegames files (SGTA*)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="430"/>
-        <location filename="../UserInterface.cpp" line="366"/>
+        <location filename="../ProfileInterface.cpp" line="435"/>
+        <location filename="../UserInterface.cpp" line="377"/>
         <source>Snapmatic pictures (PGTA*)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="427"/>
+        <location filename="../ProfileInterface.cpp" line="432"/>
         <source>Importable files (%1)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="431"/>
+        <location filename="../ProfileInterface.cpp" line="436"/>
         <source>All image files (%1)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="432"/>
-        <location filename="../UserInterface.cpp" line="367"/>
+        <location filename="../ProfileInterface.cpp" line="437"/>
+        <location filename="../UserInterface.cpp" line="378"/>
         <source>All files (**)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="455"/>
-        <location filename="../ProfileInterface.cpp" line="745"/>
-        <location filename="../UserInterface.cpp" line="455"/>
+        <location filename="../ProfileInterface.cpp" line="462"/>
+        <location filename="../ProfileInterface.cpp" line="751"/>
+        <location filename="../UserInterface.cpp" line="466"/>
         <source>No valid file is selected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="477"/>
-        <location filename="../ProfileInterface.cpp" line="492"/>
+        <location filename="../ProfileInterface.cpp" line="484"/>
+        <location filename="../ProfileInterface.cpp" line="499"/>
         <source>Import file %1 of %2 files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="507"/>
+        <location filename="../ProfileInterface.cpp" line="515"/>
         <source>Import failed with...
 
 %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="527"/>
-        <location filename="../UserInterface.cpp" line="407"/>
+        <location filename="../ProfileInterface.cpp" line="535"/>
+        <location filename="../UserInterface.cpp" line="418"/>
         <source>Failed to read Snapmatic picture</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="543"/>
-        <location filename="../UserInterface.cpp" line="423"/>
+        <location filename="../ProfileInterface.cpp" line="551"/>
+        <location filename="../UserInterface.cpp" line="434"/>
         <source>Failed to read Savegame file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="659"/>
+        <location filename="../ProfileInterface.cpp" line="666"/>
         <source>Can&apos;t import %1 because file can&apos;t be parsed properly</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="740"/>
+        <location filename="../ProfileInterface.cpp" line="746"/>
         <source>Can&apos;t import %1 because file format can&apos;t be detected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="755"/>
+        <location filename="../ProfileInterface.cpp" line="761"/>
         <source>Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="760"/>
+        <location filename="../ProfileInterface.cpp" line="766"/>
         <source>Failed to import the Snapmatic picture, the picture is already in the game</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="771"/>
+        <location filename="../ProfileInterface.cpp" line="777"/>
         <source>Failed to import the Snapmatic picture, can&apos;t copy the file into profile</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="808"/>
+        <location filename="../ProfileInterface.cpp" line="814"/>
         <source>Failed to import the Savegame, can&apos;t copy the file into profile</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="814"/>
+        <location filename="../ProfileInterface.cpp" line="820"/>
         <source>Failed to import the Savegame, no Savegame slot is left</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="878"/>
-        <location filename="../ProfileInterface.cpp" line="916"/>
-        <location filename="../ProfileInterface.cpp" line="995"/>
-        <location filename="../ProfileInterface.cpp" line="1015"/>
+        <location filename="../ProfileInterface.cpp" line="884"/>
+        <location filename="../ProfileInterface.cpp" line="922"/>
+        <location filename="../ProfileInterface.cpp" line="1001"/>
+        <location filename="../ProfileInterface.cpp" line="1021"/>
         <source>Export selected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="901"/>
-        <location filename="../ProfileInterface.cpp" line="919"/>
+        <location filename="../ProfileInterface.cpp" line="907"/>
+        <location filename="../ProfileInterface.cpp" line="925"/>
         <source>JPG pictures and GTA Snapmatic</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="902"/>
-        <location filename="../ProfileInterface.cpp" line="924"/>
+        <location filename="../ProfileInterface.cpp" line="908"/>
+        <location filename="../ProfileInterface.cpp" line="930"/>
         <source>JPG pictures only</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="903"/>
-        <location filename="../ProfileInterface.cpp" line="928"/>
+        <location filename="../ProfileInterface.cpp" line="909"/>
+        <location filename="../ProfileInterface.cpp" line="934"/>
         <source>GTA Snapmatic only</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="916"/>
+        <location filename="../ProfileInterface.cpp" line="922"/>
         <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 type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="961"/>
+        <location filename="../ProfileInterface.cpp" line="967"/>
         <source>Export selected...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="962"/>
+        <location filename="../ProfileInterface.cpp" line="968"/>
         <source>Initialising export...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="995"/>
+        <location filename="../ProfileInterface.cpp" line="1001"/>
         <source>Export failed with...
 
 %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1015"/>
-        <location filename="../ProfileInterface.cpp" line="1057"/>
+        <location filename="../ProfileInterface.cpp" line="1021"/>
+        <location filename="../ProfileInterface.cpp" line="1063"/>
         <source>No Snapmatic pictures or Savegames files are selected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1023"/>
-        <location filename="../ProfileInterface.cpp" line="1051"/>
+        <location filename="../ProfileInterface.cpp" line="1029"/>
         <location filename="../ProfileInterface.cpp" line="1057"/>
+        <location filename="../ProfileInterface.cpp" line="1063"/>
         <source>Remove selected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1023"/>
+        <location filename="../ProfileInterface.cpp" line="1029"/>
         <source>You really want remove the selected Snapmatic picutres and Savegame files?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1051"/>
+        <location filename="../ProfileInterface.cpp" line="1057"/>
         <source>Failed at remove the complete selected Snapmatic pictures and/or Savegame files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="363"/>
+        <location filename="../UserInterface.cpp" line="374"/>
         <source>All profile files (*.g5e SGTA* PGTA*)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -930,15 +1056,20 @@ Press 1 for Default View</source>
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="../main.cpp" line="66"/>
+        <location filename="../main.cpp" line="87"/>
         <source>Font</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="66"/>
+        <location filename="../main.cpp" line="87"/>
         <source>Selected Font: %1</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../main.cpp" line="108"/>
+        <source>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SavegameDialog</name>
@@ -1013,37 +1144,37 @@ Press 1 for Default View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1196"/>
+        <location filename="../ProfileInterface.cpp" line="1205"/>
         <source>&amp;View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1197"/>
+        <location filename="../ProfileInterface.cpp" line="1206"/>
         <source>&amp;Export</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1198"/>
+        <location filename="../ProfileInterface.cpp" line="1207"/>
         <source>&amp;Remove</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1200"/>
+        <location filename="../ProfileInterface.cpp" line="1209"/>
         <source>&amp;Select</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1201"/>
+        <location filename="../ProfileInterface.cpp" line="1210"/>
         <source>&amp;Deselect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1204"/>
+        <location filename="../ProfileInterface.cpp" line="1213"/>
         <source>Select &amp;All</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1208"/>
+        <location filename="../ProfileInterface.cpp" line="1217"/>
         <source>&amp;Deselect All</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1137,7 +1268,13 @@ Press 1 for Default View</source>
     <message>
         <location filename="../SnapmaticEditor.ui" line="14"/>
         <location filename="../SnapmaticEditor.ui" line="81"/>
-        <location filename="../SnapmaticEditor.cpp" line="241"/>
+        <location filename="../JsonEditorDialog.cpp" line="83"/>
+        <location filename="../JsonEditorDialog.cpp" line="130"/>
+        <location filename="../JsonEditorDialog.cpp" line="136"/>
+        <location filename="../JsonEditorDialog.cpp" line="148"/>
+        <location filename="../PictureDialog.cpp" line="732"/>
+        <location filename="../SnapmaticEditor.cpp" line="252"/>
+        <location filename="../SnapmaticWidget.cpp" line="332"/>
         <source>Snapmatic Properties</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1183,20 +1320,20 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../SnapmaticEditor.ui" line="113"/>
-        <location filename="../SnapmaticEditor.cpp" line="200"/>
+        <location filename="../SnapmaticEditor.cpp" line="211"/>
         <source>Crew: %1 (%2)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../SnapmaticEditor.ui" line="126"/>
-        <location filename="../SnapmaticEditor.cpp" line="185"/>
+        <location filename="../SnapmaticEditor.cpp" line="196"/>
         <source>Title: %1 (%2)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../SnapmaticEditor.ui" line="136"/>
-        <location filename="../SnapmaticEditor.cpp" line="189"/>
-        <location filename="../SnapmaticEditor.cpp" line="193"/>
+        <location filename="../SnapmaticEditor.cpp" line="200"/>
+        <location filename="../SnapmaticEditor.cpp" line="204"/>
         <source>Appropriate: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1226,45 +1363,59 @@ Press 1 for Default View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="184"/>
-        <location filename="../SnapmaticEditor.cpp" line="199"/>
+        <location filename="../SnapmaticEditor.cpp" line="195"/>
+        <location filename="../SnapmaticEditor.cpp" line="210"/>
         <source>Edit</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="189"/>
+        <location filename="../SnapmaticEditor.cpp" line="200"/>
         <source>Yes</source>
         <comment>Yes, should work fine</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="193"/>
+        <location filename="../SnapmaticEditor.cpp" line="204"/>
         <source>No</source>
         <comment>No, could lead to issues</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="241"/>
+        <location filename="../JsonEditorDialog.cpp" line="83"/>
+        <source>&lt;h4&gt;Unsaved changes detected&lt;/h4&gt;You want to save the JSON content before you quit?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.cpp" line="130"/>
+        <location filename="../JsonEditorDialog.cpp" line="148"/>
+        <source>Patching of Snapmatic Properties failed because of JSON Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.cpp" line="136"/>
+        <location filename="../PictureDialog.cpp" line="732"/>
+        <location filename="../SnapmaticEditor.cpp" line="252"/>
+        <location filename="../SnapmaticWidget.cpp" line="332"/>
         <source>Patching of Snapmatic Properties failed because of I/O Error</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="291"/>
+        <location filename="../SnapmaticEditor.cpp" line="302"/>
         <source>Snapmatic Title</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="291"/>
+        <location filename="../SnapmaticEditor.cpp" line="302"/>
         <source>New Snapmatic title:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="320"/>
+        <location filename="../SnapmaticEditor.cpp" line="331"/>
         <source>Snapmatic Crew</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="320"/>
+        <location filename="../SnapmaticEditor.cpp" line="331"/>
         <source>New Snapmatic crew:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1321,8 +1472,8 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../SnapmaticWidget.ui" line="152"/>
-        <location filename="../SnapmaticWidget.cpp" line="144"/>
-        <location filename="../SnapmaticWidget.cpp" line="153"/>
+        <location filename="../SnapmaticWidget.cpp" line="146"/>
+        <location filename="../SnapmaticWidget.cpp" line="155"/>
         <source>Delete picture</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1332,62 +1483,62 @@ Press 1 for Default View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1149"/>
+        <location filename="../ProfileInterface.cpp" line="1155"/>
         <source>Edi&amp;t</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1152"/>
+        <location filename="../ProfileInterface.cpp" line="1158"/>
         <source>Show &amp;In-game</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1156"/>
+        <location filename="../ProfileInterface.cpp" line="1162"/>
         <source>Hide &amp;In-game</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1159"/>
+        <location filename="../ProfileInterface.cpp" line="1168"/>
         <source>&amp;Export</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1162"/>
+        <location filename="../ProfileInterface.cpp" line="1171"/>
         <source>&amp;View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1165"/>
+        <location filename="../ProfileInterface.cpp" line="1174"/>
         <source>&amp;Remove</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1167"/>
+        <location filename="../ProfileInterface.cpp" line="1176"/>
         <source>&amp;Select</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1168"/>
+        <location filename="../ProfileInterface.cpp" line="1177"/>
         <source>&amp;Deselect</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1171"/>
+        <location filename="../ProfileInterface.cpp" line="1180"/>
         <source>Select &amp;All</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1175"/>
+        <location filename="../ProfileInterface.cpp" line="1184"/>
         <source>&amp;Deselect All</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../SnapmaticWidget.cpp" line="144"/>
+        <location filename="../SnapmaticWidget.cpp" line="146"/>
         <source>Are you sure to delete %1 from your Snapmatic pictures?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../SnapmaticWidget.cpp" line="153"/>
+        <location filename="../SnapmaticWidget.cpp" line="155"/>
         <source>Failed at deleting %1 from your Snapmatic pictures</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1396,7 +1547,7 @@ Press 1 for Default View</source>
     <name>UserInterface</name>
     <message>
         <location filename="../UserInterface.ui" line="20"/>
-        <location filename="../UserInterface.cpp" line="62"/>
+        <location filename="../UserInterface.cpp" line="61"/>
         <source>%2 - %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1458,8 +1609,8 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="226"/>
-        <location filename="../UserInterface.cpp" line="60"/>
-        <location filename="../UserInterface.cpp" line="541"/>
+        <location filename="../UserInterface.cpp" line="59"/>
+        <location filename="../UserInterface.cpp" line="552"/>
         <source>&amp;About %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1565,15 +1716,15 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="309"/>
-        <location filename="../UserInterface.cpp" line="163"/>
+        <location filename="../UserInterface.cpp" line="162"/>
         <source>Select &amp;GTA V Folder...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="312"/>
-        <location filename="../OptionsDialog.cpp" line="430"/>
-        <location filename="../UserInterface.cpp" line="104"/>
-        <location filename="../UserInterface.cpp" line="512"/>
+        <location filename="../OptionsDialog.cpp" line="564"/>
+        <location filename="../UserInterface.cpp" line="103"/>
+        <location filename="../UserInterface.cpp" line="523"/>
         <source>Select GTA V Folder...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1603,27 +1754,27 @@ Press 1 for Default View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="64"/>
-        <location filename="../UserInterface.cpp" line="234"/>
-        <location filename="../UserInterface.cpp" line="549"/>
+        <location filename="../UserInterface.cpp" line="63"/>
+        <location filename="../UserInterface.cpp" line="228"/>
+        <location filename="../UserInterface.cpp" line="560"/>
         <source>Select Profile</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="360"/>
+        <location filename="../UserInterface.cpp" line="371"/>
         <source>Open File...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="407"/>
-        <location filename="../UserInterface.cpp" line="423"/>
-        <location filename="../UserInterface.cpp" line="450"/>
-        <location filename="../UserInterface.cpp" line="455"/>
+        <location filename="../UserInterface.cpp" line="418"/>
+        <location filename="../UserInterface.cpp" line="434"/>
+        <location filename="../UserInterface.cpp" line="461"/>
+        <location filename="../UserInterface.cpp" line="466"/>
         <source>Open File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UserInterface.cpp" line="450"/>
+        <location filename="../UserInterface.cpp" line="461"/>
         <source>Can&apos;t open %1 because of not valid file format</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/main.cpp b/main.cpp
index ebd7d6b..d8d6a3b 100755
--- a/main.cpp
+++ b/main.cpp
@@ -21,6 +21,7 @@
 #include "ProfileDatabase.h"
 #include "DatabaseThread.h"
 #include "SavegameDialog.h"
+#include "OptionsDialog.h"
 #include "PictureDialog.h"
 #include "UserInterface.h"
 #include "CrewDatabase.h"
@@ -28,8 +29,11 @@
 #include "IconLoader.h"
 #include "AppEnv.h"
 #include "config.h"
+#include <QDesktopWidget>
 #include <QStringBuilder>
+#include <QStyleFactory>
 #include <QApplication>
+#include <QMessageBox>
 #include <QStringList>
 #include <QTranslator>
 #include <QFileInfo>
@@ -52,9 +56,25 @@ int main(int argc, char *argv[])
     a.setApplicationVersion(GTA5SYNC_APPVER);
     a.setQuitOnLastWindowClosed(false);
 
+    QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR);
+    settings.beginGroup("Startup");
+
+    bool isFirstStart = settings.value("IsFirstStart", true).toBool();
+    bool customStyle = settings.value("CustomStyle", false).toBool();
+    QString appStyle = settings.value("AppStyle", "Default").toString();
+
+    if (customStyle)
+    {
+        if (QStyleFactory::keys().contains(appStyle, Qt::CaseInsensitive))
+        {
+            a.setStyle(QStyleFactory::create(appStyle));
+        }
+    }
+
 #ifdef GTA5SYNC_WIN
 #if QT_VERSION >= 0x050400
-    if (QSysInfo::windowsVersion() >= 0x0080)
+    bool alwaysUseMessageFont = settings.value("AlwaysUseMessageFont", false).toBool();
+    if (QSysInfo::windowsVersion() >= 0x0080 || alwaysUseMessageFont)
     {
         // Get Windows Font
         NONCLIENTMETRICS ncm;
@@ -83,6 +103,22 @@ int main(int argc, char *argv[])
     TCInstance->initUserLanguage();
     TCInstance->loadTranslation(&a);
 
+    if (isFirstStart)
+    {
+        QMessageBox::StandardButton button = QMessageBox::information(a.desktop(), QString("%1 %2").arg(GTA5SYNC_APPSTR, GTA5SYNC_APPVER), QApplication::tr("<h4>Welcome to %1!</h4>You want to configure %1 before you start using it?").arg(GTA5SYNC_APPSTR), QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
+        if (button == QMessageBox::Yes)
+        {
+            ProfileDatabase profileDB;
+            OptionsDialog optionsDialog(&profileDB);
+            optionsDialog.setWindowIcon(IconLoader::loadingAppIcon());
+            optionsDialog.show();
+            optionsDialog.exec();
+        }
+        settings.setValue("IsFirstStart", false);
+    }
+
+    settings.endGroup();
+
     QStringList applicationArgs = a.arguments();
     QString selectedAction;
     QString arg1;
diff --git a/res/app.rc b/res/app.rc
index ee9308c..3cfc1b1 100755
--- a/res/app.rc
+++ b/res/app.rc
@@ -25,12 +25,12 @@ BEGIN
         BEGIN
             VALUE   "CompanyName",      "Syping"
             VALUE   "FileDescription",  "gta5view\0"
-            VALUE   "FileVersion",      "1.5.0-dev3\0"
+            VALUE   "FileVersion",      "1.5.0-dev4\0"
             VALUE   "InternalName",     "gta5view\0"
             VALUE   "LegalCopyright",   "Copyright � 2016-2017 Syping\0"
             VALUE   "OriginalFilename", "gta5view.exe\0"
             VALUE   "ProductName",      "gta5view\0"
-            VALUE   "ProductVersion",   "1.5.0-dev3\0"
+            VALUE   "ProductVersion",   "1.5.0-dev4\0"
         END
     END
 END
diff --git a/res/gta5sync_de.qm b/res/gta5sync_de.qm
index c934152338f2f829b6bc74e5b7a40975a4431b77..dcb336bee2c3375338532808ab313a139c686fb9 100755
GIT binary patch
delta 3886
zcma)8d015C8h>Zz3^V7<3?qx82zn491QbLOH4za(1px&|lw25w1B?u3U=~o*2D2VF
zvSlK=Wtq7zr8%yVdPOV^6E*YNt!`P8`q<6v=92o<{mmSu<@U#Y=7Hat^L^jD{NCUD
ze)HKfdD~0!=Ym~d5z#y%?IsDMW)sO56Lnur#GE4vf0js@PgIda6q8KU;|@{WqeMED
zgdrtFgZ=S+u!JEiiRK(7s<x2)KpRo;24Wi568R+pcM$dbgqV%<iE84AX<>+5LIE)y
zcvv)qnDbMK!Y)WS^%5yZ!J%-MloNn`BT2b4gD6r(%8n0+jNeJ<c!AVw3lON5Vv?RD
z8W|{|vm3?k%|rlE6zg?VH;Q7te(L5^?CB_?`XGw^E|FYRpG9#mA0rBqQQX0aL_@Yv
zoY%qh!xCB_q153pl)aQP1u!!2RT}>^aLNXnFzg~SlTpq#e6LNQ;=jXizm4Q7nnDy2
zMhy+?h<bCha>rRD(t|dX1rQlRX!~;bQ=4huU8jp^=yTM04hFR2>B^f*B69-W5c7ye
z?3Zz$#}gHKBosp=bY7Q*Z|Mia7i8trZi10ynSIDlM5RvIqSYwhzy-4B>%IZi3uPZ?
zi$r<6><8UDM3eOLh!!_d{5tvM_^a?6Dxdj*3kGUT^2!2GSD7WRetIg={J+U<uWun5
z?U6SoU_BsN{zeJvJ4lpp+WYd&^&`O8Itfc#<y(g}5y{3#$gY<#@WK0_PU(BpEeS_`
zDxtwC-|F%nbb935jh#fr)8%{iBood0S-!V5l4#~L@<Yr3qOx}RiI?<5DJ}AjTC6Xs
zkbik12UMrYzup*3<QOggIRlyMhsf_G1`%0KDion_L&TX1cH<{RwsVRe$A2M8SfS|U
zz`n@)ie%?aoI9>?8MZGYivC<-u8SaAU{F}r?;?s_sCc%B1;r-C-sC)@VLvI38bMj=
zyNXi{pi<qz_-RnXLGLrk_eMf=Sxibg43<VPlZUTC2jnr!0t(SB8<@rwU{+7eGsUaW
zVZ^M<geC?TG22$%fWONwJfL=u_Xfhi<12x;f%kwv6D>>t{t7fP+t7)$uo)-=wgVNw
zUzzRk8^GM#64t!MY~MBuqP)TESW-l!d68++ltO%~m_uuZ5|zg?9d$1v!IKg`=2|X2
z)QU{U{w3Jh#$1`zf_A&b+&SA0bTjwgO-7_mO2&II=ae#db2AZJDPi*W%HmV4$oN}j
z^&2Ll^v{*9K?b70QswG+Bvh56TzhvaQRb7%^^0eqdu}MV%U7UupD1^3J&68~Jg)ru
zTSTZ@=ci2Z5Gm&Rg&*@rpYHT4m=#4dev_X`ZY3%>=T~U}rOcCl`!)mn7*(pyK%%H6
zD(<EOC90Kh@(BrNf2ay(Fw~yNRmI#tO2l`n2EGLx7N?q1wFe1&sWPYMq5lJ(@;y-Q
zTvgRY)H=1N%KDG5iH2WMJ-5aQ2BxT*PBkI&7}feCA_m8&s&{g}hh~ygd(I9enygW^
zwnC&~nX0dHF^EFnQ*|CdTNnOYt;~W(>{r#{#|9CNJ)lm%yB;NJQIGu*6VaKjp0v3G
z8?7bk>b2|8pO@9vBLdW)scwk)6eF~c`cNwd$J}4kt@~j}by0n+4NQ&sLVdjj0rd)C
zLk=IozGgP$i!pFCknK~~31$wn(RU)DdSVC6gFUT6!Z0_Rl!z`!nZ^!Vo(X@=?6A|W
z189>rc6{?HWHz78ef|Vd?rwIL3Z;mc#g;ZB!;(#`WdhXdoX1+qfy#E)b~_1!sW0nz
z0kvoQvP%ym(4aJSMb^J?FK}$*pkz$Mx7qba@=yX9dtwX{o$(sme(6^tQ#yNkW;VoV
zWzV|?r4S7`&0aqbY8vW*8-N~8b`_BqcXG08z{gTJUH5(nWGu($!g0hIE~;T7N@U^^
zhoTh5-Q1()xUh`n653yp@QGF~_bT?4+~cNPMk%`u=ZdcTLv#*q`eiVfl)<@-d!InW
zwOkn?1Kz;BJQ0Sp?GlDWN@$XE`@_0p=I3+An~#Cweq8%C7;N}~J1IbXX=}NU#-c3^
zKXDy(yNS3O2@Sg>oGz14Eay5lf$4w`x$}Jun7o}X?!wj|QOggxOS?dQKEqvYhr08Y
zYh>QQ@=s|LV}eopC{3^3a2#sY3?F|J;#;FBJ_9DE-_|Vg2bB>`n#Sa*5NU~~F{=~r
zGb9wZXc|u<py1h>RlkH`uH<W;rAxrWn&<B?#<lHwOw$xH0wOEbtd4sM2Nz2yUeO#_
z(g&9br#Vy&#|_ay7<Qf4w2i)syCGcD;Xr^cz2@v|0!D6w=Hn*ZnpKZ$ZngXqDwjzZ
z`iPc!B@-k2ke0oMz_aFQgO>(jK+V*KYrt4Rucg}X_d+3tQ`)$g{~+UO+LB06tL~w-
z=Kv>kYL{m;fzoJg^FVypOwg{DF%X|q!s-j!^?D>Q<+k?S>vmjT1@1-aUarsXAjput
z+H0?)-tlR=-dE9KRVQ>YDd?;o$-3CjVAGPIOIeQD(yd*>@O`>5I&@U}RNdIc=g_iq
zbW?+&pAnNJED&`24$i<&gd7QTs&z+abVo<7)Ljx`KO@Ya@m>q#N?rcFk7I@ef8n2%
zhBE2D_upM&#%vKJoRRH+P{hXMH}#=&5qwUte)NxEqimtRwDu+fa_PmhyYQ>4L|?NC
zW#xA2U;bb=QQ{o^o4*>+5Xbe~K7vDjhyLh(us`v>{`9Fm(D5bxjXnstzyC%3%~uEE
z291W-#TlMg*!Kh7E8+)C?3Qh}ikW3*ht)RDY_wP_WC~m>!4yq}R6_!p$wZYv8;NQx
zkRSe((S^o3L4~K^op$TeA~LdZDxdO*r%WotSqE9k)^)CXp=hkBHag5EKD#hKkC)v3
z$&SYm)`xM~Xd+eP<8{o#pwSnG?LjyWycfyd^{yO_c)W1}7x>nAilHLx77>P(>amxn
zBud0*2%en2_dJ!u`uzv#4d@CpDczD-Z=7%EopyoG73_9ng}`T7MF$^KWERV;^>#if
zF>wfQ6w7$QXtS6F+W_}qKE!S3XLytm3dS8?9O1dyzfz`;^|5Gs5We7Eli1yTf$tU+
zILRnhIK6hutu{X0CK&Br3*F=YxF4aG(|z~reR_s;Mc3mGN8PE>yr(I8sUpaMY%N{8
zl!cD@7Wa|Zp7^y{2v)F0BfD1pysN@Uk1Y0vtb7cO^-=baJl=P}=%dI8g31uZLla(F
z^RU|qLLJD;hX212*V_QX#tG#{r^UhhT<|dkg56=XIV6HIdjz_Z`5;e7d~HClcxdb|
z_2Q0L93B{)Un7Wo^zU@yK9d^iUY0sCAV^xuHP-Oc%tF0j^PEYY6y|EAQ7Gk58tp5*
z1qoN7^pc1~<gfry^AtscDFQna9_-DfTRs_iCFRYDN4^jD@p$KzkoUa+dlvlnS}FzB
zd6nI@8)sek@=$>eO6%e}dsOAn(M5vAWUUr>hn0^S95E^ZuVz@Ce7zB(!aI{yEH_s;
zZ30&LQURI}`1x4(Q3n~C#R}f+Nb`1zc1n6pjm2z27g<GLull1p=uuDq;%WY_wk{G3
zh^7L8+W*wX-c)#M!)h6xY`$Lb?(-(*{a%H#iugGG50bnVyyv>g=tA3yVAcq(yj=d-
z`CqeF=W}eqJ!JQB{Tq3OUh)j09pk2qH&vo(1Up|QI0TbJDEl88?Z*Cf;J8wd#tT?=
z2q5@(gw{GiqsLhJjY77}J*Udvw<~hWLJ*a{68|=^Qr*|9hH#PwZ8odTZLI9&8D|OU
F`Css}3-SN}

delta 2621
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

diff --git a/res/gta5sync_de.ts b/res/gta5sync_de.ts
index a6b2420..f920076 100755
--- a/res/gta5sync_de.ts
+++ b/res/gta5sync_de.ts
@@ -259,6 +259,7 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen</translation>
     <name>CrewDatabase</name>
     <message>
         <location filename="../CrewDatabase.cpp" line="102"/>
+        <location filename="../CrewDatabase.cpp" line="113"/>
         <source>No Crew</source>
         <translation>Keine Crew</translation>
     </message>
@@ -426,12 +427,14 @@ Wenn du planst es als Avatar zu verwenden das Bild wird abgetrennt!</translation
     </message>
     <message>
         <location filename="../ImportDialog.cpp" line="105"/>
+        <location filename="../ProfileInterface.cpp" line="599"/>
         <source>Custom Avatar</source>
         <comment>Custom Avatar Description in SC, don&apos;t use Special Character!</comment>
         <translation>Eigener Avatar</translation>
     </message>
     <message>
         <location filename="../ImportDialog.cpp" line="131"/>
+        <location filename="../ProfileInterface.cpp" line="618"/>
         <source>Custom Picture</source>
         <comment>Custom Picture Description in SC, don&apos;t use Special Character!</comment>
         <translation>Eigenes Bild</translation>
@@ -454,6 +457,28 @@ Wenn du es als Avatar verwenden möchtest wird es abgetrennt!</translation>
         <translation>Farbe auswählen...</translation>
     </message>
 </context>
+<context>
+    <name>JsonEditorDialog</name>
+    <message>
+        <location filename="../JsonEditorDialog.ui" line="14"/>
+        <source>Snapmatic JSON Editor</source>
+        <translation>Snapmatic JSON Editor</translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.ui" line="107"/>
+        <source>&amp;Save</source>
+        <translation>&amp;Speichern</translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.ui" line="114"/>
+        <source>&amp;Close</source>
+        <translation>S&amp;chließen</translation>
+    </message>
+    <message>
+        <source>Patching of Snapmatic Properties failed because of JSON Error</source>
+        <translation type="vanished">Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen JSON Fehler</translation>
+    </message>
+</context>
 <context>
     <name>MapLocationDialog</name>
     <message>
@@ -502,7 +527,7 @@ Y: %2</translation>
         <translation>&amp;Fertig</translation>
     </message>
     <message>
-        <location filename="../MapLocationDialog.cpp" line="89"/>
+        <location filename="../MapLocationDialog.cpp" line="90"/>
         <source>X: %1
 Y: %2</source>
         <comment>X and Y position</comment>
@@ -672,56 +697,93 @@ Y: %2</translation>
         <translation>Name</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="387"/>
-        <source>Language</source>
-        <translation>Sprache</translation>
+        <location filename="../OptionsDialog.ui" line="412"/>
+        <source>Language for Areas</source>
+        <translation>Sprache für Standorte</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="393"/>
+        <location filename="../OptionsDialog.ui" line="431"/>
+        <source>Style</source>
+        <translation>Stil</translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="437"/>
+        <source>Use Default Style (Restart)</source>
+        <translation>Benutze Standard Stil (Neustart)</translation>
+    </message>
+    <message>
+        <source>Use Default Style</source>
+        <translation type="vanished">Benutze Standard Stil</translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="449"/>
+        <source>Style:</source>
+        <translation>Stil:</translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="474"/>
+        <source>Font</source>
+        <translation>Schrift</translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="480"/>
+        <source>Always use Message Font (Windows 2003 and earlier)</source>
+        <translation>Immer Nachrichtenschrift nutzen (Windows 2003 und früher)</translation>
+    </message>
+    <message>
+        <source>Language</source>
+        <translation type="vanished">Sprache</translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="387"/>
         <source>Interface</source>
         <translation>Oberfläche</translation>
     </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="393"/>
+        <source>Language for Interface</source>
+        <translation>Sprache für Oberfläche</translation>
+    </message>
     <message>
         <location filename="../OptionsDialog.ui" line="402"/>
         <location filename="../OptionsDialog.ui" line="421"/>
-        <location filename="../OptionsDialog.cpp" line="167"/>
-        <location filename="../OptionsDialog.cpp" line="215"/>
+        <location filename="../OptionsDialog.cpp" line="169"/>
+        <location filename="../OptionsDialog.cpp" line="217"/>
         <source>Current: %1</source>
         <translation>Aktuell: %1</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="412"/>
         <source>Areas</source>
-        <translation>Standorte</translation>
+        <translation type="vanished">Standorte</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="445"/>
+        <location filename="../OptionsDialog.ui" line="504"/>
         <source>Sync</source>
         <translation>Sync</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="451"/>
+        <location filename="../OptionsDialog.ui" line="510"/>
         <source>Sync is not implemented at current time</source>
         <translation>Sync wurde bisher nicht implementiert</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="489"/>
+        <location filename="../OptionsDialog.ui" line="548"/>
         <source>Apply changes</source>
         <translation>Änderungen übernehmen</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="492"/>
+        <location filename="../OptionsDialog.ui" line="551"/>
         <source>&amp;OK</source>
         <extracomment>OK, Cancel, Apply</extracomment>
         <translation>&amp;OK</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="505"/>
+        <location filename="../OptionsDialog.ui" line="564"/>
         <source>Discard changes</source>
         <translation>Änderungen verwerfen</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="508"/>
+        <location filename="../OptionsDialog.ui" line="567"/>
         <source>&amp;Cancel</source>
         <extracomment>OK, Cancel, Apply</extracomment>
         <translation>Abbre&amp;chen</translation>
@@ -742,7 +804,7 @@ Y: %2</translation>
         <translation type="vanished">%1 (%2 wenn verfügbar)</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="335"/>
+        <location filename="../OptionsDialog.cpp" line="408"/>
         <source>%1</source>
         <comment>%1</comment>
         <translation>%1</translation>
@@ -756,31 +818,31 @@ Y: %2</translation>
         <translation type="vanished">Der eigene Ordner initialisiert sobald du %1 neugestartet hast.</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="131"/>
+        <location filename="../OptionsDialog.cpp" line="133"/>
         <source>%1 (Next Closest Language)</source>
         <comment>First language a person can talk with a different person/application. &quot;Native&quot; or &quot;Not Native&quot;.</comment>
         <translation>%1 (Erste näheste Sprache)</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="131"/>
+        <location filename="../OptionsDialog.cpp" line="133"/>
         <source>System</source>
         <comment>System in context of System default</comment>
         <translation>System</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="133"/>
+        <location filename="../OptionsDialog.cpp" line="135"/>
         <source>%1 (Closest to Interface)</source>
         <comment>Next closest language compared to the Interface</comment>
         <translation>%1 (Näheste zur Oberfläche)</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="133"/>
+        <location filename="../OptionsDialog.cpp" line="135"/>
         <source>Auto</source>
         <comment>Automatic language choice.</comment>
         <translation>Automatisch</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="335"/>
+        <location filename="../OptionsDialog.cpp" line="408"/>
         <source>The new Custom Folder will initialise after you restart %1.</source>
         <translation>Der eigene Ordner wird initialisiert sobald du %1 neugestartet hast.</translation>
     </message>
@@ -789,15 +851,15 @@ Y: %2</translation>
         <translation type="vanished">Die Änderung der Sprache nimmt Effekt sobald du %1 neugestartet hast.</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="345"/>
+        <location filename="../OptionsDialog.cpp" line="418"/>
         <source>No Profile</source>
         <comment>No Profile, as default</comment>
         <translation>Kein Profil</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="353"/>
-        <location filename="../OptionsDialog.cpp" line="357"/>
-        <location filename="../OptionsDialog.cpp" line="359"/>
+        <location filename="../OptionsDialog.cpp" line="426"/>
+        <location filename="../OptionsDialog.cpp" line="430"/>
+        <location filename="../OptionsDialog.cpp" line="432"/>
         <source>Profile: %1</source>
         <translation>Profil: %1</translation>
     </message>
@@ -911,8 +973,8 @@ Y: %2</translation>
         <translation type="vanished">Exportiere als &amp;JPG Bild...</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="145"/>
-        <location filename="../ProfileInterface.cpp" line="1162"/>
+        <location filename="../PictureDialog.cpp" line="148"/>
+        <location filename="../ProfileInterface.cpp" line="1169"/>
         <source>Export as &amp;Picture...</source>
         <translation>Als &amp;Bild exportieren...</translation>
     </message>
@@ -921,8 +983,8 @@ Y: %2</translation>
         <translation type="vanished">Exportiere als &amp;GTA Snapmatic...</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="146"/>
-        <location filename="../ProfileInterface.cpp" line="1163"/>
+        <location filename="../PictureDialog.cpp" line="149"/>
+        <location filename="../ProfileInterface.cpp" line="1170"/>
         <source>Export as &amp;Snapmatic...</source>
         <translation>Als &amp;Snapmatic exportieren...</translation>
     </message>
@@ -931,13 +993,12 @@ Y: %2</translation>
         <translation type="vanished">Bearbei&amp;ten</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="148"/>
         <source>Open &amp;Map View...</source>
-        <translation>&amp;Kartenansicht öffnen...</translation>
+        <translation type="vanished">&amp;Kartenansicht öffnen...</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="150"/>
-        <location filename="../ProfileInterface.cpp" line="1160"/>
+        <location filename="../PictureDialog.cpp" line="151"/>
+        <location filename="../ProfileInterface.cpp" line="1164"/>
         <source>&amp;Edit Properties...</source>
         <translation>Eigenschaften bearb&amp;eiten...</translation>
     </message>
@@ -951,7 +1012,13 @@ Y: %2</translation>
         <translation type="vanished">Erweitert (&amp;A)</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="373"/>
+        <location filename="../PictureDialog.cpp" line="153"/>
+        <location filename="../ProfileInterface.cpp" line="1166"/>
+        <source>Open &amp;Map Viewer...</source>
+        <translation>&amp;Kartenansicht öffnen...</translation>
+    </message>
+    <message>
+        <location filename="../PictureDialog.cpp" line="380"/>
         <source>Key 1 - Avatar Preview Mode
 Key 2 - Toggle Overlay
 Arrow Keys - Navigate</source>
@@ -960,31 +1027,31 @@ Taste 2 - Overlay umschalten
 Pfeiltasten - Navigieren</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="433"/>
-        <location filename="../PictureDialog.cpp" line="476"/>
+        <location filename="../PictureDialog.cpp" line="439"/>
+        <location filename="../PictureDialog.cpp" line="473"/>
         <source>Snapmatic Picture Viewer</source>
         <translation>Snapmatic Bildansicht</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="433"/>
-        <location filename="../PictureDialog.cpp" line="476"/>
+        <location filename="../PictureDialog.cpp" line="439"/>
+        <location filename="../PictureDialog.cpp" line="473"/>
         <source>Failed at %1</source>
         <translation>Fehlgeschlagen bei %1</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="475"/>
-        <location filename="../PictureDialog.cpp" line="589"/>
+        <location filename="../PictureDialog.cpp" line="472"/>
+        <location filename="../PictureDialog.cpp" line="591"/>
         <source>No Crew</source>
         <translation>Keine Crew</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="475"/>
-        <location filename="../PictureDialog.cpp" line="614"/>
+        <location filename="../PictureDialog.cpp" line="472"/>
+        <location filename="../PictureDialog.cpp" line="618"/>
         <source>No Players</source>
         <translation>Keine Spieler</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="560"/>
+        <location filename="../PictureDialog.cpp" line="557"/>
         <source>Avatar Preview Mode
 Press 1 for Default View</source>
         <translation>Avatar Vorschaumodus
@@ -1029,7 +1096,7 @@ Drücke A für Standardansicht</translation>
         <translation type="vanished">Keine Crew</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="475"/>
+        <location filename="../PictureDialog.cpp" line="472"/>
         <source>Unknown Location</source>
         <translation>Unbekannter Standort</translation>
     </message>
@@ -1198,6 +1265,12 @@ Drücke A für Standardansicht</translation>
         <source>No valid file is selected</source>
         <translation>Keine gültige Datei wurde ausgewählt</translation>
     </message>
+    <message>
+        <location filename="../PictureDialog.cpp" line="155"/>
+        <location filename="../ProfileInterface.cpp" line="1167"/>
+        <source>Open &amp;JSON Editor...</source>
+        <translation>&amp;JSON Editor öffnen...</translation>
+    </message>
 </context>
 <context>
     <name>ProfileInterface</name>
@@ -1258,30 +1331,30 @@ Drücke A für Standardansicht</translation>
         <translation type="obsolete">Profil schließen</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="131"/>
+        <location filename="../ProfileInterface.cpp" line="134"/>
         <source>Loading...</source>
         <translation>Lade...</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="413"/>
-        <location filename="../ProfileInterface.cpp" line="478"/>
+        <location filename="../ProfileInterface.cpp" line="416"/>
+        <location filename="../ProfileInterface.cpp" line="483"/>
         <source>Import...</source>
         <translation>Importieren...</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="414"/>
-        <location filename="../ProfileInterface.cpp" line="457"/>
-        <location filename="../ProfileInterface.cpp" line="509"/>
-        <location filename="../ProfileInterface.cpp" line="529"/>
-        <location filename="../ProfileInterface.cpp" line="545"/>
-        <location filename="../ProfileInterface.cpp" line="661"/>
-        <location filename="../ProfileInterface.cpp" line="742"/>
-        <location filename="../ProfileInterface.cpp" line="747"/>
-        <location filename="../ProfileInterface.cpp" line="757"/>
-        <location filename="../ProfileInterface.cpp" line="762"/>
-        <location filename="../ProfileInterface.cpp" line="773"/>
-        <location filename="../ProfileInterface.cpp" line="810"/>
-        <location filename="../ProfileInterface.cpp" line="816"/>
+        <location filename="../ProfileInterface.cpp" line="417"/>
+        <location filename="../ProfileInterface.cpp" line="462"/>
+        <location filename="../ProfileInterface.cpp" line="515"/>
+        <location filename="../ProfileInterface.cpp" line="535"/>
+        <location filename="../ProfileInterface.cpp" line="551"/>
+        <location filename="../ProfileInterface.cpp" line="666"/>
+        <location filename="../ProfileInterface.cpp" line="746"/>
+        <location filename="../ProfileInterface.cpp" line="751"/>
+        <location filename="../ProfileInterface.cpp" line="761"/>
+        <location filename="../ProfileInterface.cpp" line="766"/>
+        <location filename="../ProfileInterface.cpp" line="777"/>
+        <location filename="../ProfileInterface.cpp" line="814"/>
+        <location filename="../ProfileInterface.cpp" line="820"/>
         <source>Import</source>
         <translation>Importieren</translation>
     </message>
@@ -1294,13 +1367,13 @@ Drücke A für Standardansicht</translation>
         <translation type="vanished">Importfähige Dateien (*.g5e *.jpg *.png SGTA* PGTA*)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="431"/>
+        <location filename="../ProfileInterface.cpp" line="434"/>
         <location filename="../UserInterface.cpp" line="376"/>
         <source>Savegames files (SGTA*)</source>
         <translation>Spielstanddateien (SGTA*)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="432"/>
+        <location filename="../ProfileInterface.cpp" line="435"/>
         <location filename="../UserInterface.cpp" line="377"/>
         <source>Snapmatic pictures (PGTA*)</source>
         <translation>Snapmatic Bilder (PGTA*)</translation>
@@ -1310,29 +1383,29 @@ Drücke A für Standardansicht</translation>
         <translation type="vanished">Alle Bilddateien (*.jpg *.png)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="429"/>
+        <location filename="../ProfileInterface.cpp" line="432"/>
         <source>Importable files (%1)</source>
         <translation>Importfähige Dateien (%1)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="433"/>
+        <location filename="../ProfileInterface.cpp" line="436"/>
         <source>All image files (%1)</source>
         <translation>Alle Bilddateien (%1)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="434"/>
+        <location filename="../ProfileInterface.cpp" line="437"/>
         <location filename="../UserInterface.cpp" line="378"/>
         <source>All files (**)</source>
         <translation>Alle Dateien (**)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="479"/>
-        <location filename="../ProfileInterface.cpp" line="494"/>
+        <location filename="../ProfileInterface.cpp" line="484"/>
+        <location filename="../ProfileInterface.cpp" line="499"/>
         <source>Import file %1 of %2 files</source>
         <translation>Importiere Datei %1 von %2 Dateien</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="509"/>
+        <location filename="../ProfileInterface.cpp" line="515"/>
         <source>Import failed with...
 
 %1</source>
@@ -1341,29 +1414,29 @@ Drücke A für Standardansicht</translation>
 %1</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="529"/>
+        <location filename="../ProfileInterface.cpp" line="535"/>
         <location filename="../UserInterface.cpp" line="418"/>
         <source>Failed to read Snapmatic picture</source>
         <translation>Fehler beim Lesen vom Snapmatic Bild</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="545"/>
+        <location filename="../ProfileInterface.cpp" line="551"/>
         <location filename="../UserInterface.cpp" line="434"/>
         <source>Failed to read Savegame file</source>
         <translation>Fehler beim Lesen von Spielstanddatei</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="661"/>
+        <location filename="../ProfileInterface.cpp" line="666"/>
         <source>Can&apos;t import %1 because file can&apos;t be parsed properly</source>
         <translation>Kann %1 nicht importieren weil die Datei nicht richtig gelesen werden kann</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="742"/>
+        <location filename="../ProfileInterface.cpp" line="746"/>
         <source>Can&apos;t import %1 because file format can&apos;t be detected</source>
         <translation>Kann %1 nicht importieren weil das Dateiformat nicht erkannt werden kann</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="964"/>
+        <location filename="../ProfileInterface.cpp" line="968"/>
         <source>Initialising export...</source>
         <translation>Initialisiere Export...</translation>
     </message>
@@ -1372,29 +1445,29 @@ Drücke A für Standardansicht</translation>
         <translation type="vanished">Kann %1 nicht importieren weil das Dateiformat nicht gültig ist</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="757"/>
+        <location filename="../ProfileInterface.cpp" line="761"/>
         <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="762"/>
+        <location filename="../ProfileInterface.cpp" line="766"/>
         <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="918"/>
+        <location filename="../ProfileInterface.cpp" line="922"/>
         <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="457"/>
-        <location filename="../ProfileInterface.cpp" line="747"/>
+        <location filename="../ProfileInterface.cpp" line="462"/>
+        <location filename="../ProfileInterface.cpp" line="751"/>
         <location filename="../UserInterface.cpp" line="466"/>
         <source>No valid file is selected</source>
         <translation>Keine gültige Datei wurde ausgewählt</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="65"/>
+        <location filename="../ProfileInterface.cpp" line="68"/>
         <source>Enabled pictures: %1 of %2</source>
         <translation>Aktivierte Bilder: %1 von %2</translation>
     </message>
@@ -1403,35 +1476,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="773"/>
+        <location filename="../ProfileInterface.cpp" line="777"/>
         <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="810"/>
+        <location filename="../ProfileInterface.cpp" line="814"/>
         <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="816"/>
+        <location filename="../ProfileInterface.cpp" line="820"/>
         <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="903"/>
-        <location filename="../ProfileInterface.cpp" line="921"/>
+        <location filename="../ProfileInterface.cpp" line="907"/>
+        <location filename="../ProfileInterface.cpp" line="925"/>
         <source>JPG pictures and GTA Snapmatic</source>
         <translation>JPG Bilder und GTA Snapmatic</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="904"/>
-        <location filename="../ProfileInterface.cpp" line="926"/>
+        <location filename="../ProfileInterface.cpp" line="908"/>
+        <location filename="../ProfileInterface.cpp" line="930"/>
         <source>JPG pictures only</source>
         <translation>Nur JPG Bilder</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="905"/>
-        <location filename="../ProfileInterface.cpp" line="930"/>
+        <location filename="../ProfileInterface.cpp" line="909"/>
+        <location filename="../ProfileInterface.cpp" line="934"/>
         <source>GTA Snapmatic only</source>
         <translation>Nur GTA Snapmatic</translation>
     </message>
@@ -1450,25 +1523,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="1017"/>
-        <location filename="../ProfileInterface.cpp" line="1059"/>
+        <location filename="../ProfileInterface.cpp" line="1021"/>
+        <location filename="../ProfileInterface.cpp" line="1063"/>
         <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="1025"/>
-        <location filename="../ProfileInterface.cpp" line="1053"/>
-        <location filename="../ProfileInterface.cpp" line="1059"/>
+        <location filename="../ProfileInterface.cpp" line="1029"/>
+        <location filename="../ProfileInterface.cpp" line="1057"/>
+        <location filename="../ProfileInterface.cpp" line="1063"/>
         <source>Remove selected</source>
         <translation>Auswahl löschen</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1025"/>
+        <location filename="../ProfileInterface.cpp" line="1029"/>
         <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="1053"/>
+        <location filename="../ProfileInterface.cpp" line="1057"/>
         <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>
@@ -1489,10 +1562,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="880"/>
-        <location filename="../ProfileInterface.cpp" line="918"/>
-        <location filename="../ProfileInterface.cpp" line="997"/>
-        <location filename="../ProfileInterface.cpp" line="1017"/>
+        <location filename="../ProfileInterface.cpp" line="884"/>
+        <location filename="../ProfileInterface.cpp" line="922"/>
+        <location filename="../ProfileInterface.cpp" line="1001"/>
+        <location filename="../ProfileInterface.cpp" line="1021"/>
         <source>Export selected</source>
         <translation>Auswahl exportieren</translation>
     </message>
@@ -1513,7 +1586,7 @@ Exportieren als:</translation>
         <translation type="obsolete">Wie sollen wir mit den Snapmatic Bilder umgehen?</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="963"/>
+        <location filename="../ProfileInterface.cpp" line="967"/>
         <source>Export selected...</source>
         <translation>Auswahl exportieren...</translation>
     </message>
@@ -1526,7 +1599,7 @@ Exportieren als:</translation>
         <translation type="obsolete">Initialisierung...</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="997"/>
+        <location filename="../ProfileInterface.cpp" line="1001"/>
         <source>Export failed with...
 
 %1</source>
@@ -1561,7 +1634,7 @@ Exportieren als:</translation>
         <translation>Alle Profildateien (*.g5e SGTA* PGTA*)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="430"/>
+        <location filename="../ProfileInterface.cpp" line="433"/>
         <location filename="../UserInterface.cpp" line="375"/>
         <source>GTA V Export (*.g5e)</source>
         <translation>GTA V Export (*.g5e)</translation>
@@ -1570,15 +1643,20 @@ Exportieren als:</translation>
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="../main.cpp" line="67"/>
+        <location filename="../main.cpp" line="87"/>
         <source>Font</source>
         <translation>Schrift</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="67"/>
+        <location filename="../main.cpp" line="87"/>
         <source>Selected Font: %1</source>
         <translation>Ausgewähle Schrift: %1</translation>
     </message>
+    <message>
+        <location filename="../main.cpp" line="108"/>
+        <source>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
+        <translation>&lt;h4&gt;Willkommen zu %1!&lt;/h4&gt;Möchtest du %1 einstellen bevor du es nutzt?</translation>
+    </message>
 </context>
 <context>
     <name>SavegameDialog</name>
@@ -1725,32 +1803,32 @@ Exportieren als:</translation>
         <translation>Fehlgeschlagen beim Löschen %1 von deinen Spielständen</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1198"/>
+        <location filename="../ProfileInterface.cpp" line="1205"/>
         <source>&amp;View</source>
         <translation>A&amp;nsehen</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1200"/>
+        <location filename="../ProfileInterface.cpp" line="1207"/>
         <source>&amp;Remove</source>
         <translation>Entfe&amp;rnen</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1202"/>
+        <location filename="../ProfileInterface.cpp" line="1209"/>
         <source>&amp;Select</source>
         <translation>Au&amp;swählen</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1203"/>
+        <location filename="../ProfileInterface.cpp" line="1210"/>
         <source>&amp;Deselect</source>
         <translation>A&amp;bwählen</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1206"/>
+        <location filename="../ProfileInterface.cpp" line="1213"/>
         <source>Select &amp;All</source>
         <translation>&amp;Alles auswählen</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1210"/>
+        <location filename="../ProfileInterface.cpp" line="1217"/>
         <source>&amp;Deselect All</source>
         <translation>Alles a&amp;bwählen</translation>
     </message>
@@ -1789,7 +1867,7 @@ Exportieren als:</translation>
         <translation>Spielstand kopieren</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1199"/>
+        <location filename="../ProfileInterface.cpp" line="1206"/>
         <source>&amp;Export</source>
         <translation>&amp;Exportieren</translation>
     </message>
@@ -1865,8 +1943,13 @@ Exportieren als:</translation>
     <message>
         <location filename="../SnapmaticEditor.ui" line="14"/>
         <location filename="../SnapmaticEditor.ui" line="81"/>
-        <location filename="../PictureDialog.cpp" line="727"/>
-        <location filename="../SnapmaticEditor.cpp" line="241"/>
+        <location filename="../JsonEditorDialog.cpp" line="83"/>
+        <location filename="../JsonEditorDialog.cpp" line="130"/>
+        <location filename="../JsonEditorDialog.cpp" line="136"/>
+        <location filename="../JsonEditorDialog.cpp" line="148"/>
+        <location filename="../PictureDialog.cpp" line="732"/>
+        <location filename="../SnapmaticEditor.cpp" line="252"/>
+        <location filename="../SnapmaticWidget.cpp" line="332"/>
         <source>Snapmatic Properties</source>
         <translation>Snapmatic Eigenschaften</translation>
     </message>
@@ -1910,7 +1993,7 @@ Exportieren als:</translation>
         <translation>Meme</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="291"/>
+        <location filename="../SnapmaticEditor.cpp" line="302"/>
         <source>Snapmatic Title</source>
         <translation>Snapmatic Titel</translation>
     </message>
@@ -1921,20 +2004,20 @@ Exportieren als:</translation>
     </message>
     <message>
         <location filename="../SnapmaticEditor.ui" line="113"/>
-        <location filename="../SnapmaticEditor.cpp" line="200"/>
+        <location filename="../SnapmaticEditor.cpp" line="211"/>
         <source>Crew: %1 (%2)</source>
         <translation>Crew: %1 (%2)</translation>
     </message>
     <message>
         <location filename="../SnapmaticEditor.ui" line="126"/>
-        <location filename="../SnapmaticEditor.cpp" line="185"/>
+        <location filename="../SnapmaticEditor.cpp" line="196"/>
         <source>Title: %1 (%2)</source>
         <translation>Titel: %1 (%2)</translation>
     </message>
     <message>
         <location filename="../SnapmaticEditor.ui" line="136"/>
-        <location filename="../SnapmaticEditor.cpp" line="189"/>
-        <location filename="../SnapmaticEditor.cpp" line="193"/>
+        <location filename="../SnapmaticEditor.cpp" line="200"/>
+        <location filename="../SnapmaticEditor.cpp" line="204"/>
         <source>Appropriate: %1</source>
         <translation>Angemessen: %1</translation>
     </message>
@@ -1972,41 +2055,54 @@ Exportieren als:</translation>
         <translation type="vanished">Cancel</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="184"/>
-        <location filename="../SnapmaticEditor.cpp" line="199"/>
+        <location filename="../SnapmaticEditor.cpp" line="195"/>
+        <location filename="../SnapmaticEditor.cpp" line="210"/>
         <source>Edit</source>
         <translation>Bearbeiten</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="189"/>
+        <location filename="../SnapmaticEditor.cpp" line="200"/>
         <source>Yes</source>
         <comment>Yes, should work fine</comment>
         <translation>Ja</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="193"/>
+        <location filename="../SnapmaticEditor.cpp" line="204"/>
         <source>No</source>
         <comment>No, could lead to issues</comment>
         <translation>Nein</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="727"/>
-        <location filename="../SnapmaticEditor.cpp" line="241"/>
+        <location filename="../JsonEditorDialog.cpp" line="83"/>
+        <source>&lt;h4&gt;Unsaved changes detected&lt;/h4&gt;You want to save the JSON content before you quit?</source>
+        <translation>&lt;h4&gt;Ungespeicherte Änderungen erkannt&lt;/h4&gt;Möchtest du den JSON Inhalt speichern bevor du verlässt?</translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.cpp" line="130"/>
+        <location filename="../JsonEditorDialog.cpp" line="148"/>
+        <source>Patching of Snapmatic Properties failed because of JSON Error</source>
+        <translation>Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen JSON Fehler</translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.cpp" line="136"/>
+        <location filename="../PictureDialog.cpp" line="732"/>
+        <location filename="../SnapmaticEditor.cpp" line="252"/>
+        <location filename="../SnapmaticWidget.cpp" line="332"/>
         <source>Patching of Snapmatic Properties failed because of I/O Error</source>
         <translation>Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen I/O Fehler</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="291"/>
+        <location filename="../SnapmaticEditor.cpp" line="302"/>
         <source>New Snapmatic title:</source>
         <translation>Neuer Snapmatic Titel:</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="320"/>
+        <location filename="../SnapmaticEditor.cpp" line="331"/>
         <source>Snapmatic Crew</source>
         <translation>Snapmatic Crew</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="320"/>
+        <location filename="../SnapmaticEditor.cpp" line="331"/>
         <source>New Snapmatic crew:</source>
         <translation>Neue Snapmatic Crew:</translation>
     </message>
@@ -2053,18 +2149,18 @@ Exportieren als:</translation>
     </message>
     <message>
         <location filename="../SnapmaticWidget.ui" line="152"/>
-        <location filename="../SnapmaticWidget.cpp" line="144"/>
-        <location filename="../SnapmaticWidget.cpp" line="153"/>
+        <location filename="../SnapmaticWidget.cpp" line="146"/>
+        <location filename="../SnapmaticWidget.cpp" line="155"/>
         <source>Delete picture</source>
         <translation>Bild löschen</translation>
     </message>
     <message>
-        <location filename="../SnapmaticWidget.cpp" line="144"/>
+        <location filename="../SnapmaticWidget.cpp" line="146"/>
         <source>Are you sure to delete %1 from your Snapmatic pictures?</source>
         <translation>Bist du sicher %1 von deine Snapmatic Bilder zu löschen?</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1151"/>
+        <location filename="../ProfileInterface.cpp" line="1155"/>
         <source>Edi&amp;t</source>
         <translation>Bearbei&amp;ten</translation>
     </message>
@@ -2077,7 +2173,7 @@ Exportieren als:</translation>
         <translation type="vanished">&amp;Im Spiel deaktivieren</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1161"/>
+        <location filename="../ProfileInterface.cpp" line="1168"/>
         <source>&amp;Export</source>
         <translation>&amp;Exportieren</translation>
     </message>
@@ -2090,12 +2186,12 @@ Exportieren als:</translation>
         <translation type="obsolete">Exportiere als &amp;GTA Snapmatic</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1154"/>
+        <location filename="../ProfileInterface.cpp" line="1158"/>
         <source>Show &amp;In-game</source>
         <translation>&amp;Im Spiel anzeigen</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1158"/>
+        <location filename="../ProfileInterface.cpp" line="1162"/>
         <source>Hide &amp;In-game</source>
         <translation>&amp;Im Spiel ausblenden</translation>
     </message>
@@ -2128,32 +2224,32 @@ Exportieren als:</translation>
         <translation type="vanished">Exportiere als &amp;Snapmatic...</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1164"/>
+        <location filename="../ProfileInterface.cpp" line="1171"/>
         <source>&amp;View</source>
         <translation>A&amp;nsehen</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1167"/>
+        <location filename="../ProfileInterface.cpp" line="1174"/>
         <source>&amp;Remove</source>
         <translation>Entfe&amp;rnen</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1169"/>
+        <location filename="../ProfileInterface.cpp" line="1176"/>
         <source>&amp;Select</source>
         <translation>Au&amp;swählen</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1170"/>
+        <location filename="../ProfileInterface.cpp" line="1177"/>
         <source>&amp;Deselect</source>
         <translation>A&amp;bwählen</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1173"/>
+        <location filename="../ProfileInterface.cpp" line="1180"/>
         <source>Select &amp;All</source>
         <translation>Alles &amp;auswählen</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1177"/>
+        <location filename="../ProfileInterface.cpp" line="1184"/>
         <source>&amp;Deselect All</source>
         <translation>Alles a&amp;bwählen</translation>
     </message>
@@ -2201,7 +2297,7 @@ Exportieren als:</translation>
         <translation type="obsolete">Bist du sicher %1 von deinen Snapmatic Bilder zu löschen?</translation>
     </message>
     <message>
-        <location filename="../SnapmaticWidget.cpp" line="153"/>
+        <location filename="../SnapmaticWidget.cpp" line="155"/>
         <source>Failed at deleting %1 from your Snapmatic pictures</source>
         <translation>Fehlgeschlagen beim Löschen von %1 von deinen Snapmatic Bildern</translation>
     </message>
@@ -2499,7 +2595,7 @@ Exportieren als:</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="312"/>
-        <location filename="../OptionsDialog.cpp" line="491"/>
+        <location filename="../OptionsDialog.cpp" line="564"/>
         <location filename="../UserInterface.cpp" line="103"/>
         <location filename="../UserInterface.cpp" line="523"/>
         <source>Select GTA V Folder...</source>
diff --git a/res/gta5sync_en_US.qm b/res/gta5sync_en_US.qm
index a017ab7fb6f68d45df27e8578c6f80bd1e12bf79..f097a03af3f3321ccba17fb238037e4e7d104ed9 100644
GIT binary patch
delta 2332
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
AH2?qr

delta 2371
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

diff --git a/res/gta5sync_en_US.ts b/res/gta5sync_en_US.ts
index cc2c4b6..46170db 100644
--- a/res/gta5sync_en_US.ts
+++ b/res/gta5sync_en_US.ts
@@ -114,6 +114,7 @@ Pictures and Savegames</source>
     <name>CrewDatabase</name>
     <message>
         <location filename="../CrewDatabase.cpp" line="102"/>
+        <location filename="../CrewDatabase.cpp" line="113"/>
         <source>No Crew</source>
         <translation></translation>
     </message>
@@ -237,12 +238,14 @@ Pictures and Savegames</source>
     </message>
     <message>
         <location filename="../ImportDialog.cpp" line="105"/>
+        <location filename="../ProfileInterface.cpp" line="599"/>
         <source>Custom Avatar</source>
         <comment>Custom Avatar Description in SC, don&apos;t use Special Character!</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../ImportDialog.cpp" line="131"/>
+        <location filename="../ProfileInterface.cpp" line="618"/>
         <source>Custom Picture</source>
         <comment>Custom Picture Description in SC, don&apos;t use Special Character!</comment>
         <translation type="unfinished"></translation>
@@ -264,6 +267,24 @@ When you want to use it as Avatar the image will be detached!</source>
         <translation>Select Color...</translation>
     </message>
 </context>
+<context>
+    <name>JsonEditorDialog</name>
+    <message>
+        <location filename="../JsonEditorDialog.ui" line="14"/>
+        <source>Snapmatic JSON Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.ui" line="107"/>
+        <source>&amp;Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.ui" line="114"/>
+        <source>&amp;Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>MapLocationDialog</name>
     <message>
@@ -297,7 +318,7 @@ When you want to use it as Avatar the image will be detached!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MapLocationDialog.cpp" line="89"/>
+        <location filename="../MapLocationDialog.cpp" line="90"/>
         <source>X: %1
 Y: %2</source>
         <comment>X and Y position</comment>
@@ -437,106 +458,131 @@ Y: %2</source>
         <source>Name</source>
         <translation></translation>
     </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="412"/>
+        <source>Language for Areas</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="431"/>
+        <source>Style</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="449"/>
+        <source>Style:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="474"/>
+        <source>Font</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="480"/>
+        <source>Always use Message Font (Windows 2003 and earlier)</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
         <location filename="../OptionsDialog.ui" line="387"/>
-        <source>Language</source>
-        <translation></translation>
+        <source>Interface</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../OptionsDialog.ui" line="393"/>
-        <source>Interface</source>
+        <source>Language for Interface</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../OptionsDialog.ui" line="402"/>
         <location filename="../OptionsDialog.ui" line="421"/>
-        <location filename="../OptionsDialog.cpp" line="167"/>
-        <location filename="../OptionsDialog.cpp" line="215"/>
+        <location filename="../OptionsDialog.cpp" line="169"/>
+        <location filename="../OptionsDialog.cpp" line="217"/>
         <source>Current: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="412"/>
-        <source>Areas</source>
+        <location filename="../OptionsDialog.ui" line="437"/>
+        <source>Use Default Style (Restart)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="445"/>
+        <location filename="../OptionsDialog.ui" line="504"/>
         <source>Sync</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="451"/>
+        <location filename="../OptionsDialog.ui" line="510"/>
         <source>Sync is not implemented at current time</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="489"/>
+        <location filename="../OptionsDialog.ui" line="548"/>
         <source>Apply changes</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="492"/>
+        <location filename="../OptionsDialog.ui" line="551"/>
         <source>&amp;OK</source>
         <extracomment>OK, Cancel, Apply</extracomment>
         <translation></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="505"/>
+        <location filename="../OptionsDialog.ui" line="564"/>
         <source>Discard changes</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="508"/>
+        <location filename="../OptionsDialog.ui" line="567"/>
         <source>&amp;Cancel</source>
         <extracomment>OK, Cancel, Apply</extracomment>
         <translation></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="131"/>
+        <location filename="../OptionsDialog.cpp" line="133"/>
         <source>%1 (Next Closest Language)</source>
         <comment>First language a person can talk with a different person/application. &quot;Native&quot; or &quot;Not Native&quot;.</comment>
         <translation></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="131"/>
+        <location filename="../OptionsDialog.cpp" line="133"/>
         <source>System</source>
         <comment>System in context of System default</comment>
         <translation></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="133"/>
+        <location filename="../OptionsDialog.cpp" line="135"/>
         <source>%1 (Closest to Interface)</source>
         <comment>Next closest language compared to the Interface</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="133"/>
+        <location filename="../OptionsDialog.cpp" line="135"/>
         <source>Auto</source>
         <comment>Automatic language choice.</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="335"/>
+        <location filename="../OptionsDialog.cpp" line="408"/>
         <source>%1</source>
         <comment>%1</comment>
         <translation></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="335"/>
+        <location filename="../OptionsDialog.cpp" line="408"/>
         <source>The new Custom Folder will initialise after you restart %1.</source>
         <translation>The new Custom Folder will initialize after you restart %1.</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="345"/>
+        <location filename="../OptionsDialog.cpp" line="418"/>
         <source>No Profile</source>
         <comment>No Profile, as default</comment>
         <translation></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="353"/>
-        <location filename="../OptionsDialog.cpp" line="357"/>
-        <location filename="../OptionsDialog.cpp" line="359"/>
+        <location filename="../OptionsDialog.cpp" line="426"/>
+        <location filename="../OptionsDialog.cpp" line="430"/>
+        <location filename="../OptionsDialog.cpp" line="432"/>
         <source>Profile: %1</source>
         <translation></translation>
     </message>
@@ -577,66 +623,67 @@ Y: %2</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="145"/>
-        <location filename="../ProfileInterface.cpp" line="1162"/>
+        <location filename="../PictureDialog.cpp" line="148"/>
+        <location filename="../ProfileInterface.cpp" line="1169"/>
         <source>Export as &amp;Picture...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="146"/>
-        <location filename="../ProfileInterface.cpp" line="1163"/>
+        <location filename="../PictureDialog.cpp" line="149"/>
+        <location filename="../ProfileInterface.cpp" line="1170"/>
         <source>Export as &amp;Snapmatic...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="148"/>
-        <source>Open &amp;Map View...</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../PictureDialog.cpp" line="150"/>
-        <location filename="../ProfileInterface.cpp" line="1160"/>
+        <location filename="../PictureDialog.cpp" line="151"/>
+        <location filename="../ProfileInterface.cpp" line="1164"/>
         <source>&amp;Edit Properties...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="373"/>
+        <location filename="../PictureDialog.cpp" line="153"/>
+        <location filename="../ProfileInterface.cpp" line="1166"/>
+        <source>Open &amp;Map Viewer...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PictureDialog.cpp" line="380"/>
         <source>Key 1 - Avatar Preview Mode
 Key 2 - Toggle Overlay
 Arrow Keys - Navigate</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="433"/>
-        <location filename="../PictureDialog.cpp" line="476"/>
+        <location filename="../PictureDialog.cpp" line="439"/>
+        <location filename="../PictureDialog.cpp" line="473"/>
         <source>Snapmatic Picture Viewer</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="433"/>
-        <location filename="../PictureDialog.cpp" line="476"/>
+        <location filename="../PictureDialog.cpp" line="439"/>
+        <location filename="../PictureDialog.cpp" line="473"/>
         <source>Failed at %1</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="475"/>
-        <location filename="../PictureDialog.cpp" line="614"/>
+        <location filename="../PictureDialog.cpp" line="472"/>
+        <location filename="../PictureDialog.cpp" line="618"/>
         <source>No Players</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="475"/>
-        <location filename="../PictureDialog.cpp" line="589"/>
+        <location filename="../PictureDialog.cpp" line="472"/>
+        <location filename="../PictureDialog.cpp" line="591"/>
         <source>No Crew</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="475"/>
+        <location filename="../PictureDialog.cpp" line="472"/>
         <source>Unknown Location</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="560"/>
+        <location filename="../PictureDialog.cpp" line="557"/>
         <source>Avatar Preview Mode
 Press 1 for Default View</source>
         <translation></translation>
@@ -744,6 +791,12 @@ Press 1 for Default View</source>
         <source>Exported Snapmatic to &quot;%1&quot; because of using the .auto extension.</source>
         <translation></translation>
     </message>
+    <message>
+        <location filename="../PictureDialog.cpp" line="155"/>
+        <location filename="../ProfileInterface.cpp" line="1167"/>
+        <source>Open &amp;JSON Editor...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ProfileInterface</name>
@@ -790,207 +843,207 @@ Press 1 for Default View</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="65"/>
+        <location filename="../ProfileInterface.cpp" line="68"/>
         <source>Enabled pictures: %1 of %2</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="131"/>
+        <location filename="../ProfileInterface.cpp" line="134"/>
         <source>Loading...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="413"/>
-        <location filename="../ProfileInterface.cpp" line="478"/>
+        <location filename="../ProfileInterface.cpp" line="416"/>
+        <location filename="../ProfileInterface.cpp" line="483"/>
         <source>Import...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="414"/>
-        <location filename="../ProfileInterface.cpp" line="457"/>
-        <location filename="../ProfileInterface.cpp" line="509"/>
-        <location filename="../ProfileInterface.cpp" line="529"/>
-        <location filename="../ProfileInterface.cpp" line="545"/>
-        <location filename="../ProfileInterface.cpp" line="661"/>
-        <location filename="../ProfileInterface.cpp" line="742"/>
-        <location filename="../ProfileInterface.cpp" line="747"/>
-        <location filename="../ProfileInterface.cpp" line="757"/>
-        <location filename="../ProfileInterface.cpp" line="762"/>
-        <location filename="../ProfileInterface.cpp" line="773"/>
-        <location filename="../ProfileInterface.cpp" line="810"/>
-        <location filename="../ProfileInterface.cpp" line="816"/>
+        <location filename="../ProfileInterface.cpp" line="417"/>
+        <location filename="../ProfileInterface.cpp" line="462"/>
+        <location filename="../ProfileInterface.cpp" line="515"/>
+        <location filename="../ProfileInterface.cpp" line="535"/>
+        <location filename="../ProfileInterface.cpp" line="551"/>
+        <location filename="../ProfileInterface.cpp" line="666"/>
+        <location filename="../ProfileInterface.cpp" line="746"/>
+        <location filename="../ProfileInterface.cpp" line="751"/>
+        <location filename="../ProfileInterface.cpp" line="761"/>
+        <location filename="../ProfileInterface.cpp" line="766"/>
+        <location filename="../ProfileInterface.cpp" line="777"/>
+        <location filename="../ProfileInterface.cpp" line="814"/>
+        <location filename="../ProfileInterface.cpp" line="820"/>
         <source>Import</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="429"/>
+        <location filename="../ProfileInterface.cpp" line="432"/>
         <source>Importable files (%1)</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="430"/>
+        <location filename="../ProfileInterface.cpp" line="433"/>
         <location filename="../UserInterface.cpp" line="375"/>
         <source>GTA V Export (*.g5e)</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="431"/>
+        <location filename="../ProfileInterface.cpp" line="434"/>
         <location filename="../UserInterface.cpp" line="376"/>
         <source>Savegames files (SGTA*)</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="432"/>
+        <location filename="../ProfileInterface.cpp" line="435"/>
         <location filename="../UserInterface.cpp" line="377"/>
         <source>Snapmatic pictures (PGTA*)</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="433"/>
+        <location filename="../ProfileInterface.cpp" line="436"/>
         <source>All image files (%1)</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="434"/>
+        <location filename="../ProfileInterface.cpp" line="437"/>
         <location filename="../UserInterface.cpp" line="378"/>
         <source>All files (**)</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="457"/>
-        <location filename="../ProfileInterface.cpp" line="747"/>
+        <location filename="../ProfileInterface.cpp" line="462"/>
+        <location filename="../ProfileInterface.cpp" line="751"/>
         <location filename="../UserInterface.cpp" line="466"/>
         <source>No valid file is selected</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="479"/>
-        <location filename="../ProfileInterface.cpp" line="494"/>
+        <location filename="../ProfileInterface.cpp" line="484"/>
+        <location filename="../ProfileInterface.cpp" line="499"/>
         <source>Import file %1 of %2 files</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="509"/>
+        <location filename="../ProfileInterface.cpp" line="515"/>
         <source>Import failed with...
 
 %1</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="529"/>
+        <location filename="../ProfileInterface.cpp" line="535"/>
         <location filename="../UserInterface.cpp" line="418"/>
         <source>Failed to read Snapmatic picture</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="545"/>
+        <location filename="../ProfileInterface.cpp" line="551"/>
         <location filename="../UserInterface.cpp" line="434"/>
         <source>Failed to read Savegame file</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="661"/>
+        <location filename="../ProfileInterface.cpp" line="666"/>
         <source>Can&apos;t import %1 because file can&apos;t be parsed properly</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="742"/>
+        <location filename="../ProfileInterface.cpp" line="746"/>
         <source>Can&apos;t import %1 because file format can&apos;t be detected</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="757"/>
+        <location filename="../ProfileInterface.cpp" line="761"/>
         <source>Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="762"/>
+        <location filename="../ProfileInterface.cpp" line="766"/>
         <source>Failed to import the Snapmatic picture, the picture is already in the game</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="773"/>
+        <location filename="../ProfileInterface.cpp" line="777"/>
         <source>Failed to import the Snapmatic picture, can&apos;t copy the file into profile</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="810"/>
+        <location filename="../ProfileInterface.cpp" line="814"/>
         <source>Failed to import the Savegame, can&apos;t copy the file into profile</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="816"/>
+        <location filename="../ProfileInterface.cpp" line="820"/>
         <source>Failed to import the Savegame, no Savegame slot is left</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="880"/>
-        <location filename="../ProfileInterface.cpp" line="918"/>
-        <location filename="../ProfileInterface.cpp" line="997"/>
-        <location filename="../ProfileInterface.cpp" line="1017"/>
+        <location filename="../ProfileInterface.cpp" line="884"/>
+        <location filename="../ProfileInterface.cpp" line="922"/>
+        <location filename="../ProfileInterface.cpp" line="1001"/>
+        <location filename="../ProfileInterface.cpp" line="1021"/>
         <source>Export selected</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="903"/>
-        <location filename="../ProfileInterface.cpp" line="921"/>
+        <location filename="../ProfileInterface.cpp" line="907"/>
+        <location filename="../ProfileInterface.cpp" line="925"/>
         <source>JPG pictures and GTA Snapmatic</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="904"/>
-        <location filename="../ProfileInterface.cpp" line="926"/>
+        <location filename="../ProfileInterface.cpp" line="908"/>
+        <location filename="../ProfileInterface.cpp" line="930"/>
         <source>JPG pictures only</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="905"/>
-        <location filename="../ProfileInterface.cpp" line="930"/>
+        <location filename="../ProfileInterface.cpp" line="909"/>
+        <location filename="../ProfileInterface.cpp" line="934"/>
         <source>GTA Snapmatic only</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="918"/>
+        <location filename="../ProfileInterface.cpp" line="922"/>
         <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></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="963"/>
+        <location filename="../ProfileInterface.cpp" line="967"/>
         <source>Export selected...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="964"/>
+        <location filename="../ProfileInterface.cpp" line="968"/>
         <source>Initialising export...</source>
         <translation>Initializing export...</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="997"/>
+        <location filename="../ProfileInterface.cpp" line="1001"/>
         <source>Export failed with...
 
 %1</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1017"/>
-        <location filename="../ProfileInterface.cpp" line="1059"/>
+        <location filename="../ProfileInterface.cpp" line="1021"/>
+        <location filename="../ProfileInterface.cpp" line="1063"/>
         <source>No Snapmatic pictures or Savegames files are selected</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1025"/>
-        <location filename="../ProfileInterface.cpp" line="1053"/>
-        <location filename="../ProfileInterface.cpp" line="1059"/>
+        <location filename="../ProfileInterface.cpp" line="1029"/>
+        <location filename="../ProfileInterface.cpp" line="1057"/>
+        <location filename="../ProfileInterface.cpp" line="1063"/>
         <source>Remove selected</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1025"/>
+        <location filename="../ProfileInterface.cpp" line="1029"/>
         <source>You really want remove the selected Snapmatic picutres and Savegame files?</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1053"/>
+        <location filename="../ProfileInterface.cpp" line="1057"/>
         <source>Failed at remove the complete selected Snapmatic pictures and/or Savegame files</source>
         <translation></translation>
     </message>
@@ -1003,15 +1056,20 @@ Press 1 for Default View</source>
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="../main.cpp" line="67"/>
+        <location filename="../main.cpp" line="87"/>
         <source>Font</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="67"/>
+        <location filename="../main.cpp" line="87"/>
         <source>Selected Font: %1</source>
         <translation></translation>
     </message>
+    <message>
+        <location filename="../main.cpp" line="108"/>
+        <source>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SavegameDialog</name>
@@ -1086,37 +1144,37 @@ Press 1 for Default View</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1198"/>
+        <location filename="../ProfileInterface.cpp" line="1205"/>
         <source>&amp;View</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1199"/>
+        <location filename="../ProfileInterface.cpp" line="1206"/>
         <source>&amp;Export</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1200"/>
+        <location filename="../ProfileInterface.cpp" line="1207"/>
         <source>&amp;Remove</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1202"/>
+        <location filename="../ProfileInterface.cpp" line="1209"/>
         <source>&amp;Select</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1203"/>
+        <location filename="../ProfileInterface.cpp" line="1210"/>
         <source>&amp;Deselect</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1206"/>
+        <location filename="../ProfileInterface.cpp" line="1213"/>
         <source>Select &amp;All</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1210"/>
+        <location filename="../ProfileInterface.cpp" line="1217"/>
         <source>&amp;Deselect All</source>
         <translation></translation>
     </message>
@@ -1210,8 +1268,13 @@ Press 1 for Default View</source>
     <message>
         <location filename="../SnapmaticEditor.ui" line="14"/>
         <location filename="../SnapmaticEditor.ui" line="81"/>
-        <location filename="../PictureDialog.cpp" line="727"/>
-        <location filename="../SnapmaticEditor.cpp" line="241"/>
+        <location filename="../JsonEditorDialog.cpp" line="83"/>
+        <location filename="../JsonEditorDialog.cpp" line="130"/>
+        <location filename="../JsonEditorDialog.cpp" line="136"/>
+        <location filename="../JsonEditorDialog.cpp" line="148"/>
+        <location filename="../PictureDialog.cpp" line="732"/>
+        <location filename="../SnapmaticEditor.cpp" line="252"/>
+        <location filename="../SnapmaticWidget.cpp" line="332"/>
         <source>Snapmatic Properties</source>
         <translation></translation>
     </message>
@@ -1257,20 +1320,20 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../SnapmaticEditor.ui" line="113"/>
-        <location filename="../SnapmaticEditor.cpp" line="200"/>
+        <location filename="../SnapmaticEditor.cpp" line="211"/>
         <source>Crew: %1 (%2)</source>
         <translation></translation>
     </message>
     <message>
         <location filename="../SnapmaticEditor.ui" line="126"/>
-        <location filename="../SnapmaticEditor.cpp" line="185"/>
+        <location filename="../SnapmaticEditor.cpp" line="196"/>
         <source>Title: %1 (%2)</source>
         <translation></translation>
     </message>
     <message>
         <location filename="../SnapmaticEditor.ui" line="136"/>
-        <location filename="../SnapmaticEditor.cpp" line="189"/>
-        <location filename="../SnapmaticEditor.cpp" line="193"/>
+        <location filename="../SnapmaticEditor.cpp" line="200"/>
+        <location filename="../SnapmaticEditor.cpp" line="204"/>
         <source>Appropriate: %1</source>
         <translation></translation>
     </message>
@@ -1300,46 +1363,59 @@ Press 1 for Default View</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="184"/>
-        <location filename="../SnapmaticEditor.cpp" line="199"/>
+        <location filename="../SnapmaticEditor.cpp" line="195"/>
+        <location filename="../SnapmaticEditor.cpp" line="210"/>
         <source>Edit</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="189"/>
+        <location filename="../SnapmaticEditor.cpp" line="200"/>
         <source>Yes</source>
         <comment>Yes, should work fine</comment>
         <translation></translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="193"/>
+        <location filename="../SnapmaticEditor.cpp" line="204"/>
         <source>No</source>
         <comment>No, could lead to issues</comment>
         <translation></translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="727"/>
-        <location filename="../SnapmaticEditor.cpp" line="241"/>
+        <location filename="../JsonEditorDialog.cpp" line="83"/>
+        <source>&lt;h4&gt;Unsaved changes detected&lt;/h4&gt;You want to save the JSON content before you quit?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.cpp" line="130"/>
+        <location filename="../JsonEditorDialog.cpp" line="148"/>
+        <source>Patching of Snapmatic Properties failed because of JSON Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.cpp" line="136"/>
+        <location filename="../PictureDialog.cpp" line="732"/>
+        <location filename="../SnapmaticEditor.cpp" line="252"/>
+        <location filename="../SnapmaticWidget.cpp" line="332"/>
         <source>Patching of Snapmatic Properties failed because of I/O Error</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="291"/>
+        <location filename="../SnapmaticEditor.cpp" line="302"/>
         <source>Snapmatic Title</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="291"/>
+        <location filename="../SnapmaticEditor.cpp" line="302"/>
         <source>New Snapmatic title:</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="320"/>
+        <location filename="../SnapmaticEditor.cpp" line="331"/>
         <source>Snapmatic Crew</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="320"/>
+        <location filename="../SnapmaticEditor.cpp" line="331"/>
         <source>New Snapmatic crew:</source>
         <translation></translation>
     </message>
@@ -1396,8 +1472,8 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../SnapmaticWidget.ui" line="152"/>
-        <location filename="../SnapmaticWidget.cpp" line="144"/>
-        <location filename="../SnapmaticWidget.cpp" line="153"/>
+        <location filename="../SnapmaticWidget.cpp" line="146"/>
+        <location filename="../SnapmaticWidget.cpp" line="155"/>
         <source>Delete picture</source>
         <translation></translation>
     </message>
@@ -1407,62 +1483,62 @@ Press 1 for Default View</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1151"/>
+        <location filename="../ProfileInterface.cpp" line="1155"/>
         <source>Edi&amp;t</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1154"/>
+        <location filename="../ProfileInterface.cpp" line="1158"/>
         <source>Show &amp;In-game</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1158"/>
+        <location filename="../ProfileInterface.cpp" line="1162"/>
         <source>Hide &amp;In-game</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1161"/>
+        <location filename="../ProfileInterface.cpp" line="1168"/>
         <source>&amp;Export</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1164"/>
+        <location filename="../ProfileInterface.cpp" line="1171"/>
         <source>&amp;View</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1167"/>
+        <location filename="../ProfileInterface.cpp" line="1174"/>
         <source>&amp;Remove</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1169"/>
+        <location filename="../ProfileInterface.cpp" line="1176"/>
         <source>&amp;Select</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1170"/>
+        <location filename="../ProfileInterface.cpp" line="1177"/>
         <source>&amp;Deselect</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1173"/>
+        <location filename="../ProfileInterface.cpp" line="1180"/>
         <source>Select &amp;All</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1177"/>
+        <location filename="../ProfileInterface.cpp" line="1184"/>
         <source>&amp;Deselect All</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../SnapmaticWidget.cpp" line="144"/>
+        <location filename="../SnapmaticWidget.cpp" line="146"/>
         <source>Are you sure to delete %1 from your Snapmatic pictures?</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../SnapmaticWidget.cpp" line="153"/>
+        <location filename="../SnapmaticWidget.cpp" line="155"/>
         <source>Failed at deleting %1 from your Snapmatic pictures</source>
         <translation></translation>
     </message>
@@ -1646,7 +1722,7 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="312"/>
-        <location filename="../OptionsDialog.cpp" line="491"/>
+        <location filename="../OptionsDialog.cpp" line="564"/>
         <location filename="../UserInterface.cpp" line="103"/>
         <location filename="../UserInterface.cpp" line="523"/>
         <source>Select GTA V Folder...</source>
diff --git a/res/gta5sync_fr.qm b/res/gta5sync_fr.qm
index 1750a3e81909b81a84f8b685ddb765cde1b67899..53ccfdd44cfc6d84d33aeda2d23be8b26914b9f8 100644
GIT binary patch
delta 1994
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
IczlZU|3{rGkN^Mx

delta 2029
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

diff --git a/res/gta5sync_fr.ts b/res/gta5sync_fr.ts
index caa233d..096568d 100644
--- a/res/gta5sync_fr.ts
+++ b/res/gta5sync_fr.ts
@@ -223,6 +223,7 @@ et les fichiers de sauvegarde de Grand Theft Auto V</translation>
     <name>CrewDatabase</name>
     <message>
         <location filename="../CrewDatabase.cpp" line="102"/>
+        <location filename="../CrewDatabase.cpp" line="113"/>
         <source>No Crew</source>
         <translation>Aucun crew</translation>
     </message>
@@ -362,12 +363,14 @@ et les fichiers de sauvegarde de Grand Theft Auto V</translation>
     </message>
     <message>
         <location filename="../ImportDialog.cpp" line="105"/>
+        <location filename="../ProfileInterface.cpp" line="599"/>
         <source>Custom Avatar</source>
         <comment>Custom Avatar Description in SC, don&apos;t use Special Character!</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../ImportDialog.cpp" line="131"/>
+        <location filename="../ProfileInterface.cpp" line="618"/>
         <source>Custom Picture</source>
         <comment>Custom Picture Description in SC, don&apos;t use Special Character!</comment>
         <translation type="unfinished"></translation>
@@ -389,6 +392,24 @@ When you want to use it as Avatar the image will be detached!</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
+<context>
+    <name>JsonEditorDialog</name>
+    <message>
+        <location filename="../JsonEditorDialog.ui" line="14"/>
+        <source>Snapmatic JSON Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.ui" line="107"/>
+        <source>&amp;Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.ui" line="114"/>
+        <source>&amp;Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
 <context>
     <name>MapLocationDialog</name>
     <message>
@@ -422,7 +443,7 @@ When you want to use it as Avatar the image will be detached!</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MapLocationDialog.cpp" line="89"/>
+        <location filename="../MapLocationDialog.cpp" line="90"/>
         <source>X: %1
 Y: %2</source>
         <comment>X and Y position</comment>
@@ -570,56 +591,85 @@ Y: %2</source>
         <translation>Nom</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="387"/>
+        <location filename="../OptionsDialog.ui" line="412"/>
+        <source>Language for Areas</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="431"/>
+        <source>Style</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="449"/>
+        <source>Style:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="474"/>
+        <source>Font</source>
+        <translation type="unfinished">Police</translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="480"/>
+        <source>Always use Message Font (Windows 2003 and earlier)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Language</source>
-        <translation>Langue</translation>
+        <translation type="vanished">Langue</translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="387"/>
+        <source>Interface</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../OptionsDialog.ui" line="393"/>
-        <source>Interface</source>
+        <source>Language for Interface</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../OptionsDialog.ui" line="402"/>
         <location filename="../OptionsDialog.ui" line="421"/>
-        <location filename="../OptionsDialog.cpp" line="167"/>
-        <location filename="../OptionsDialog.cpp" line="215"/>
+        <location filename="../OptionsDialog.cpp" line="169"/>
+        <location filename="../OptionsDialog.cpp" line="217"/>
         <source>Current: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="412"/>
-        <source>Areas</source>
+        <location filename="../OptionsDialog.ui" line="437"/>
+        <source>Use Default Style (Restart)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="445"/>
+        <location filename="../OptionsDialog.ui" line="504"/>
         <source>Sync</source>
         <translation>Synchronisation</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="451"/>
+        <location filename="../OptionsDialog.ui" line="510"/>
         <source>Sync is not implemented at current time</source>
         <translation>La synchronisation n&apos;est pas encore implémentée</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="489"/>
+        <location filename="../OptionsDialog.ui" line="548"/>
         <source>Apply changes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="492"/>
+        <location filename="../OptionsDialog.ui" line="551"/>
         <source>&amp;OK</source>
         <extracomment>OK, Cancel, Apply</extracomment>
         <translation>&amp;OK</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="505"/>
+        <location filename="../OptionsDialog.ui" line="564"/>
         <source>Discard changes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="508"/>
+        <location filename="../OptionsDialog.ui" line="567"/>
         <source>&amp;Cancel</source>
         <extracomment>OK, Cancel, Apply</extracomment>
         <translation>&amp;Annuler</translation>
@@ -635,37 +685,37 @@ Y: %2</source>
         <translation type="vanished">Système</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="131"/>
+        <location filename="../OptionsDialog.cpp" line="133"/>
         <source>%1 (Next Closest Language)</source>
         <comment>First language a person can talk with a different person/application. &quot;Native&quot; or &quot;Not Native&quot;.</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="131"/>
+        <location filename="../OptionsDialog.cpp" line="133"/>
         <source>System</source>
         <comment>System in context of System default</comment>
         <translation>Système</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="133"/>
+        <location filename="../OptionsDialog.cpp" line="135"/>
         <source>%1 (Closest to Interface)</source>
         <comment>Next closest language compared to the Interface</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="133"/>
+        <location filename="../OptionsDialog.cpp" line="135"/>
         <source>Auto</source>
         <comment>Automatic language choice.</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="335"/>
+        <location filename="../OptionsDialog.cpp" line="408"/>
         <source>%1</source>
         <comment>%1</comment>
         <translation>%1</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="335"/>
+        <location filename="../OptionsDialog.cpp" line="408"/>
         <source>The new Custom Folder will initialise after you restart %1.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -678,15 +728,15 @@ Y: %2</source>
         <translation type="vanished">Le changement de langue sera actif au prochain lancement de %1.</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="345"/>
+        <location filename="../OptionsDialog.cpp" line="418"/>
         <source>No Profile</source>
         <comment>No Profile, as default</comment>
         <translation>Aucun profil</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="353"/>
-        <location filename="../OptionsDialog.cpp" line="357"/>
-        <location filename="../OptionsDialog.cpp" line="359"/>
+        <location filename="../OptionsDialog.cpp" line="426"/>
+        <location filename="../OptionsDialog.cpp" line="430"/>
+        <location filename="../OptionsDialog.cpp" line="432"/>
         <source>Profile: %1</source>
         <translation>Profil : %1</translation>
     </message>
@@ -852,8 +902,8 @@ Y: %2</source>
         <translation type="vanished">Exporter comme image &amp;JPG...</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="145"/>
-        <location filename="../ProfileInterface.cpp" line="1162"/>
+        <location filename="../PictureDialog.cpp" line="148"/>
+        <location filename="../ProfileInterface.cpp" line="1169"/>
         <source>Export as &amp;Picture...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -862,8 +912,8 @@ Y: %2</source>
         <translation type="vanished">Exporter comme &amp;GTA Snapmatic...</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="146"/>
-        <location filename="../ProfileInterface.cpp" line="1163"/>
+        <location filename="../PictureDialog.cpp" line="149"/>
+        <location filename="../ProfileInterface.cpp" line="1170"/>
         <source>Export as &amp;Snapmatic...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -872,18 +922,19 @@ Y: %2</source>
         <translation type="obsolete">Édi&amp;ter</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="148"/>
-        <source>Open &amp;Map View...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../PictureDialog.cpp" line="150"/>
-        <location filename="../ProfileInterface.cpp" line="1160"/>
+        <location filename="../PictureDialog.cpp" line="151"/>
+        <location filename="../ProfileInterface.cpp" line="1164"/>
         <source>&amp;Edit Properties...</source>
         <translation>Modifier les &amp;propriétés...</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="373"/>
+        <location filename="../PictureDialog.cpp" line="153"/>
+        <location filename="../ProfileInterface.cpp" line="1166"/>
+        <source>Open &amp;Map Viewer...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PictureDialog.cpp" line="380"/>
         <source>Key 1 - Avatar Preview Mode
 Key 2 - Toggle Overlay
 Arrow Keys - Navigate</source>
@@ -892,31 +943,31 @@ Touche 2 - Activer/désactiver l&apos;overlay
 Touches fléchées - Naviguer</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="433"/>
-        <location filename="../PictureDialog.cpp" line="476"/>
+        <location filename="../PictureDialog.cpp" line="439"/>
+        <location filename="../PictureDialog.cpp" line="473"/>
         <source>Snapmatic Picture Viewer</source>
         <translation>Visionneuse de photo Snapmatic</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="433"/>
-        <location filename="../PictureDialog.cpp" line="476"/>
+        <location filename="../PictureDialog.cpp" line="439"/>
+        <location filename="../PictureDialog.cpp" line="473"/>
         <source>Failed at %1</source>
         <translation>Echec de %1</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="475"/>
-        <location filename="../PictureDialog.cpp" line="589"/>
+        <location filename="../PictureDialog.cpp" line="472"/>
+        <location filename="../PictureDialog.cpp" line="591"/>
         <source>No Crew</source>
         <translation>Aucun crew</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="475"/>
-        <location filename="../PictureDialog.cpp" line="614"/>
+        <location filename="../PictureDialog.cpp" line="472"/>
+        <location filename="../PictureDialog.cpp" line="618"/>
         <source>No Players</source>
         <translation>Aucun joueurs</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="560"/>
+        <location filename="../PictureDialog.cpp" line="557"/>
         <source>Avatar Preview Mode
 Press 1 for Default View</source>
         <translation>Mode Aperçu Avatar
@@ -935,7 +986,7 @@ Appuyer sur 1 pour le mode par défaut</translation>
         <translation type="vanished">Aucun crew</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="475"/>
+        <location filename="../PictureDialog.cpp" line="472"/>
         <source>Unknown Location</source>
         <translation>Emplacement inconnu</translation>
     </message>
@@ -968,6 +1019,12 @@ Appuyer sur 1 pour le mode par défaut</translation>
         <source>Failed to export current Snapmatic picture</source>
         <translation>Échec de l&apos;export de la photo Snapmatic</translation>
     </message>
+    <message>
+        <location filename="../PictureDialog.cpp" line="155"/>
+        <location filename="../ProfileInterface.cpp" line="1167"/>
+        <source>Open &amp;JSON Editor...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ProfileInterface</name>
@@ -1018,35 +1075,35 @@ Appuyer sur 1 pour le mode par défaut</translation>
         <translation>Copie du fichier %1 sur %2</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="65"/>
+        <location filename="../ProfileInterface.cpp" line="68"/>
         <source>Enabled pictures: %1 of %2</source>
         <translation>Photos activées : %1 sur %2</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="131"/>
+        <location filename="../ProfileInterface.cpp" line="134"/>
         <source>Loading...</source>
         <translation>Chargement...</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="413"/>
-        <location filename="../ProfileInterface.cpp" line="478"/>
+        <location filename="../ProfileInterface.cpp" line="416"/>
+        <location filename="../ProfileInterface.cpp" line="483"/>
         <source>Import...</source>
         <translation>Importer...</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="414"/>
-        <location filename="../ProfileInterface.cpp" line="457"/>
-        <location filename="../ProfileInterface.cpp" line="509"/>
-        <location filename="../ProfileInterface.cpp" line="529"/>
-        <location filename="../ProfileInterface.cpp" line="545"/>
-        <location filename="../ProfileInterface.cpp" line="661"/>
-        <location filename="../ProfileInterface.cpp" line="742"/>
-        <location filename="../ProfileInterface.cpp" line="747"/>
-        <location filename="../ProfileInterface.cpp" line="757"/>
-        <location filename="../ProfileInterface.cpp" line="762"/>
-        <location filename="../ProfileInterface.cpp" line="773"/>
-        <location filename="../ProfileInterface.cpp" line="810"/>
-        <location filename="../ProfileInterface.cpp" line="816"/>
+        <location filename="../ProfileInterface.cpp" line="417"/>
+        <location filename="../ProfileInterface.cpp" line="462"/>
+        <location filename="../ProfileInterface.cpp" line="515"/>
+        <location filename="../ProfileInterface.cpp" line="535"/>
+        <location filename="../ProfileInterface.cpp" line="551"/>
+        <location filename="../ProfileInterface.cpp" line="666"/>
+        <location filename="../ProfileInterface.cpp" line="746"/>
+        <location filename="../ProfileInterface.cpp" line="751"/>
+        <location filename="../ProfileInterface.cpp" line="761"/>
+        <location filename="../ProfileInterface.cpp" line="766"/>
+        <location filename="../ProfileInterface.cpp" line="777"/>
+        <location filename="../ProfileInterface.cpp" line="814"/>
+        <location filename="../ProfileInterface.cpp" line="820"/>
         <source>Import</source>
         <translation>Importer</translation>
     </message>
@@ -1055,36 +1112,36 @@ Appuyer sur 1 pour le mode par défaut</translation>
         <translation type="vanished">Fichiers de profil GTA (SGTA* PGTA*)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="431"/>
+        <location filename="../ProfileInterface.cpp" line="434"/>
         <location filename="../UserInterface.cpp" line="376"/>
         <source>Savegames files (SGTA*)</source>
         <translation>Fichiers de sauvegarde GTA (SGTA*)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="432"/>
+        <location filename="../ProfileInterface.cpp" line="435"/>
         <location filename="../UserInterface.cpp" line="377"/>
         <source>Snapmatic pictures (PGTA*)</source>
         <translation>Photos Snapmatic (PGTA*)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="433"/>
+        <location filename="../ProfileInterface.cpp" line="436"/>
         <source>All image files (%1)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="434"/>
+        <location filename="../ProfileInterface.cpp" line="437"/>
         <location filename="../UserInterface.cpp" line="378"/>
         <source>All files (**)</source>
         <translation>Tous les fichiers (**)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="479"/>
-        <location filename="../ProfileInterface.cpp" line="494"/>
+        <location filename="../ProfileInterface.cpp" line="484"/>
+        <location filename="../ProfileInterface.cpp" line="499"/>
         <source>Import file %1 of %2 files</source>
         <translation>Importation du fichier %1 sur %2</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="509"/>
+        <location filename="../ProfileInterface.cpp" line="515"/>
         <source>Import failed with...
 
 %1</source>
@@ -1093,25 +1150,25 @@ Appuyer sur 1 pour le mode par défaut</translation>
 %1</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="457"/>
-        <location filename="../ProfileInterface.cpp" line="747"/>
+        <location filename="../ProfileInterface.cpp" line="462"/>
+        <location filename="../ProfileInterface.cpp" line="751"/>
         <location filename="../UserInterface.cpp" line="466"/>
         <source>No valid file is selected</source>
         <translation>Fichier invalide</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="429"/>
+        <location filename="../ProfileInterface.cpp" line="432"/>
         <source>Importable files (%1)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="529"/>
+        <location filename="../ProfileInterface.cpp" line="535"/>
         <location filename="../UserInterface.cpp" line="418"/>
         <source>Failed to read Snapmatic picture</source>
         <translation>Impossible d&apos;ouvrir la photo Snapmatic</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="545"/>
+        <location filename="../ProfileInterface.cpp" line="551"/>
         <location filename="../UserInterface.cpp" line="434"/>
         <source>Failed to read Savegame file</source>
         <translation>Impossible de lire le fichier de sauvegarde</translation>
@@ -1133,78 +1190,78 @@ Appuyer sur 1 pour le mode par défaut</translation>
         <translation type="vanished">Tous les fichiers image (*.jpg *.png)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="661"/>
+        <location filename="../ProfileInterface.cpp" line="666"/>
         <source>Can&apos;t import %1 because file can&apos;t be parsed properly</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="742"/>
+        <location filename="../ProfileInterface.cpp" line="746"/>
         <source>Can&apos;t import %1 because file format can&apos;t be detected</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="757"/>
+        <location filename="../ProfileInterface.cpp" line="761"/>
         <source>Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e</source>
         <translation>Impossible d&apos;importer la photo Snapmatic,nom de fichier incorrect (PGTA*, *.g5e)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="762"/>
+        <location filename="../ProfileInterface.cpp" line="766"/>
         <source>Failed to import the Snapmatic picture, the picture is already in the game</source>
         <translation>Impossible d&apos;importer la photo Snapmatic, un fichier du même nom existe déjà</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="773"/>
+        <location filename="../ProfileInterface.cpp" line="777"/>
         <source>Failed to import the Snapmatic picture, can&apos;t copy the file into profile</source>
         <translation>Impossible d&apos;importer la photo Snapmatic, impossible de copier le fichier dans le profil</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="810"/>
+        <location filename="../ProfileInterface.cpp" line="814"/>
         <source>Failed to import the Savegame, can&apos;t copy the file into profile</source>
         <translation>Impossible d&apos;importer la sauvegarde, impossible de copier le fichier dans le profil</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="816"/>
+        <location filename="../ProfileInterface.cpp" line="820"/>
         <source>Failed to import the Savegame, no Savegame slot is left</source>
         <translation>Impossible d&apos;importer la sauvegarde, aucun emplacement libre</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="880"/>
-        <location filename="../ProfileInterface.cpp" line="918"/>
-        <location filename="../ProfileInterface.cpp" line="997"/>
-        <location filename="../ProfileInterface.cpp" line="1017"/>
+        <location filename="../ProfileInterface.cpp" line="884"/>
+        <location filename="../ProfileInterface.cpp" line="922"/>
+        <location filename="../ProfileInterface.cpp" line="1001"/>
+        <location filename="../ProfileInterface.cpp" line="1021"/>
         <source>Export selected</source>
         <translation>Exporter la sélection</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="903"/>
-        <location filename="../ProfileInterface.cpp" line="921"/>
+        <location filename="../ProfileInterface.cpp" line="907"/>
+        <location filename="../ProfileInterface.cpp" line="925"/>
         <source>JPG pictures and GTA Snapmatic</source>
         <translation>Images JPG et GTA Snapmatic</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="904"/>
-        <location filename="../ProfileInterface.cpp" line="926"/>
+        <location filename="../ProfileInterface.cpp" line="908"/>
+        <location filename="../ProfileInterface.cpp" line="930"/>
         <source>JPG pictures only</source>
         <translation>Images JPG seulement</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="905"/>
-        <location filename="../ProfileInterface.cpp" line="930"/>
+        <location filename="../ProfileInterface.cpp" line="909"/>
+        <location filename="../ProfileInterface.cpp" line="934"/>
         <source>GTA Snapmatic only</source>
         <translation>GTA Snapmatic seulement</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="918"/>
+        <location filename="../ProfileInterface.cpp" line="922"/>
         <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>%1Exporter les photos Snapmatic%2&lt;br&gt;&lt;br&gt;Les fichiers JPG permettent d&apos;ouvrir les photos avec une visionneuse d&apos;images&lt;br&gt;Les GTA Snapmatic permettent d&apos;importer les photos dans le jeu&lt;br&gt;&lt;br&gt;Exporter comme :</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="963"/>
+        <location filename="../ProfileInterface.cpp" line="967"/>
         <source>Export selected...</source>
         <translation>Exporter la sélection...</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="964"/>
+        <location filename="../ProfileInterface.cpp" line="968"/>
         <source>Initialising export...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1213,7 +1270,7 @@ Appuyer sur 1 pour le mode par défaut</translation>
         <translation type="vanished">Initialisation de l&apos;export...</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="997"/>
+        <location filename="../ProfileInterface.cpp" line="1001"/>
         <source>Export failed with...
 
 %1</source>
@@ -1222,25 +1279,25 @@ Appuyer sur 1 pour le mode par défaut</translation>
 %1</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1017"/>
-        <location filename="../ProfileInterface.cpp" line="1059"/>
+        <location filename="../ProfileInterface.cpp" line="1021"/>
+        <location filename="../ProfileInterface.cpp" line="1063"/>
         <source>No Snapmatic pictures or Savegames files are selected</source>
         <translation>Aucun fichier de sauvegarde ou photo Snapmatic sélectionné</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1025"/>
-        <location filename="../ProfileInterface.cpp" line="1053"/>
-        <location filename="../ProfileInterface.cpp" line="1059"/>
+        <location filename="../ProfileInterface.cpp" line="1029"/>
+        <location filename="../ProfileInterface.cpp" line="1057"/>
+        <location filename="../ProfileInterface.cpp" line="1063"/>
         <source>Remove selected</source>
         <translation>Supprimer la sélection</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1025"/>
+        <location filename="../ProfileInterface.cpp" line="1029"/>
         <source>You really want remove the selected Snapmatic picutres and Savegame files?</source>
         <translation>Supprimer la sélection ?</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1053"/>
+        <location filename="../ProfileInterface.cpp" line="1057"/>
         <source>Failed at remove the complete selected Snapmatic pictures and/or Savegame files</source>
         <translation>Impossible de supprimer la sélection</translation>
     </message>
@@ -1250,7 +1307,7 @@ Appuyer sur 1 pour le mode par défaut</translation>
         <translation>Tous les fichiers de profil (*.g5e SGTA* PGTA*)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="430"/>
+        <location filename="../ProfileInterface.cpp" line="433"/>
         <location filename="../UserInterface.cpp" line="375"/>
         <source>GTA V Export (*.g5e)</source>
         <translation>GTA V Export (*.g5e)</translation>
@@ -1259,15 +1316,20 @@ Appuyer sur 1 pour le mode par défaut</translation>
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="../main.cpp" line="67"/>
+        <location filename="../main.cpp" line="87"/>
         <source>Font</source>
         <translation>Police</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="67"/>
+        <location filename="../main.cpp" line="87"/>
         <source>Selected Font: %1</source>
         <translation>Police sélectionnée : %1</translation>
     </message>
+    <message>
+        <location filename="../main.cpp" line="108"/>
+        <source>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SavegameDialog</name>
@@ -1342,7 +1404,7 @@ Appuyer sur 1 pour le mode par défaut</translation>
         <translation>Supprimer</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1199"/>
+        <location filename="../ProfileInterface.cpp" line="1206"/>
         <source>&amp;Export</source>
         <translation>&amp;Exporter</translation>
     </message>
@@ -1433,32 +1495,32 @@ Appuyer sur 1 pour le mode par défaut</translation>
         <translation>Impossible de supprimer %1</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1198"/>
+        <location filename="../ProfileInterface.cpp" line="1205"/>
         <source>&amp;View</source>
         <translation>&amp;Voir</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1200"/>
+        <location filename="../ProfileInterface.cpp" line="1207"/>
         <source>&amp;Remove</source>
         <translation>&amp;Supprimer</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1202"/>
+        <location filename="../ProfileInterface.cpp" line="1209"/>
         <source>&amp;Select</source>
         <translation>&amp;Sélectionner</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1203"/>
+        <location filename="../ProfileInterface.cpp" line="1210"/>
         <source>&amp;Deselect</source>
         <translation>&amp;Déselectionner</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1206"/>
+        <location filename="../ProfileInterface.cpp" line="1213"/>
         <source>Select &amp;All</source>
         <translation>Sélectionner to&amp;ut</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1210"/>
+        <location filename="../ProfileInterface.cpp" line="1217"/>
         <source>&amp;Deselect All</source>
         <translation>&amp;Déselectionner tout</translation>
     </message>
@@ -1468,8 +1530,13 @@ Appuyer sur 1 pour le mode par défaut</translation>
     <message>
         <location filename="../SnapmaticEditor.ui" line="14"/>
         <location filename="../SnapmaticEditor.ui" line="81"/>
-        <location filename="../PictureDialog.cpp" line="727"/>
-        <location filename="../SnapmaticEditor.cpp" line="241"/>
+        <location filename="../JsonEditorDialog.cpp" line="83"/>
+        <location filename="../JsonEditorDialog.cpp" line="130"/>
+        <location filename="../JsonEditorDialog.cpp" line="136"/>
+        <location filename="../JsonEditorDialog.cpp" line="148"/>
+        <location filename="../PictureDialog.cpp" line="732"/>
+        <location filename="../SnapmaticEditor.cpp" line="252"/>
+        <location filename="../SnapmaticWidget.cpp" line="332"/>
         <source>Snapmatic Properties</source>
         <translation>Propriétés Snapmatic</translation>
     </message>
@@ -1513,7 +1580,7 @@ Appuyer sur 1 pour le mode par défaut</translation>
         <translation>Meme</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="291"/>
+        <location filename="../SnapmaticEditor.cpp" line="302"/>
         <source>Snapmatic Title</source>
         <translation>Titre Snapmatic</translation>
     </message>
@@ -1524,20 +1591,20 @@ Appuyer sur 1 pour le mode par défaut</translation>
     </message>
     <message>
         <location filename="../SnapmaticEditor.ui" line="113"/>
-        <location filename="../SnapmaticEditor.cpp" line="200"/>
+        <location filename="../SnapmaticEditor.cpp" line="211"/>
         <source>Crew: %1 (%2)</source>
         <translation>Crew : %1 (%2)</translation>
     </message>
     <message>
         <location filename="../SnapmaticEditor.ui" line="126"/>
-        <location filename="../SnapmaticEditor.cpp" line="185"/>
+        <location filename="../SnapmaticEditor.cpp" line="196"/>
         <source>Title: %1 (%2)</source>
         <translation>Titre : %1 (%2)</translation>
     </message>
     <message>
         <location filename="../SnapmaticEditor.ui" line="136"/>
-        <location filename="../SnapmaticEditor.cpp" line="189"/>
-        <location filename="../SnapmaticEditor.cpp" line="193"/>
+        <location filename="../SnapmaticEditor.cpp" line="200"/>
+        <location filename="../SnapmaticEditor.cpp" line="204"/>
         <source>Appropriate: %1</source>
         <translation>Valide : %1</translation>
     </message>
@@ -1567,43 +1634,56 @@ Appuyer sur 1 pour le mode par défaut</translation>
         <translation>A&amp;nnuler</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="184"/>
-        <location filename="../SnapmaticEditor.cpp" line="199"/>
+        <location filename="../SnapmaticEditor.cpp" line="195"/>
+        <location filename="../SnapmaticEditor.cpp" line="210"/>
         <source>Edit</source>
         <translation>Éditer</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="189"/>
+        <location filename="../SnapmaticEditor.cpp" line="200"/>
         <source>Yes</source>
         <comment>Yes, should work fine</comment>
         <translatorcomment>Oui, devrait fonctionner</translatorcomment>
         <translation>Oui</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="193"/>
+        <location filename="../SnapmaticEditor.cpp" line="204"/>
         <source>No</source>
         <comment>No, could lead to issues</comment>
         <translatorcomment>Non, pourrait causer des erreurs</translatorcomment>
         <translation>Non</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="727"/>
-        <location filename="../SnapmaticEditor.cpp" line="241"/>
+        <location filename="../JsonEditorDialog.cpp" line="83"/>
+        <source>&lt;h4&gt;Unsaved changes detected&lt;/h4&gt;You want to save the JSON content before you quit?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.cpp" line="130"/>
+        <location filename="../JsonEditorDialog.cpp" line="148"/>
+        <source>Patching of Snapmatic Properties failed because of JSON Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.cpp" line="136"/>
+        <location filename="../PictureDialog.cpp" line="732"/>
+        <location filename="../SnapmaticEditor.cpp" line="252"/>
+        <location filename="../SnapmaticWidget.cpp" line="332"/>
         <source>Patching of Snapmatic Properties failed because of I/O Error</source>
         <translation>La modification des propriétés Snapmatic a échoué : erreur d&apos;entrée/sortie</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="291"/>
+        <location filename="../SnapmaticEditor.cpp" line="302"/>
         <source>New Snapmatic title:</source>
         <translation>Nouveau titre Snapmatic :</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="320"/>
+        <location filename="../SnapmaticEditor.cpp" line="331"/>
         <source>Snapmatic Crew</source>
         <translation>Crew Snapmatic</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="320"/>
+        <location filename="../SnapmaticEditor.cpp" line="331"/>
         <source>New Snapmatic crew:</source>
         <translation>Nouveau crew Snapmatic :</translation>
     </message>
@@ -1660,8 +1740,8 @@ Appuyer sur 1 pour le mode par défaut</translation>
     </message>
     <message>
         <location filename="../SnapmaticWidget.ui" line="152"/>
-        <location filename="../SnapmaticWidget.cpp" line="144"/>
-        <location filename="../SnapmaticWidget.cpp" line="153"/>
+        <location filename="../SnapmaticWidget.cpp" line="146"/>
+        <location filename="../SnapmaticWidget.cpp" line="155"/>
         <source>Delete picture</source>
         <translation>Supprimer la photo</translation>
     </message>
@@ -1671,27 +1751,27 @@ Appuyer sur 1 pour le mode par défaut</translation>
         <translation>Supprimer</translation>
     </message>
     <message>
-        <location filename="../SnapmaticWidget.cpp" line="144"/>
+        <location filename="../SnapmaticWidget.cpp" line="146"/>
         <source>Are you sure to delete %1 from your Snapmatic pictures?</source>
         <translation>Supprimer %1 ?</translation>
     </message>
     <message>
-        <location filename="../SnapmaticWidget.cpp" line="153"/>
+        <location filename="../SnapmaticWidget.cpp" line="155"/>
         <source>Failed at deleting %1 from your Snapmatic pictures</source>
         <translation>Impossible de supprimer %1</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1151"/>
+        <location filename="../ProfileInterface.cpp" line="1155"/>
         <source>Edi&amp;t</source>
         <translation>Édi&amp;ter</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1154"/>
+        <location filename="../ProfileInterface.cpp" line="1158"/>
         <source>Show &amp;In-game</source>
         <translation>&amp;Visible en jeu</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1158"/>
+        <location filename="../ProfileInterface.cpp" line="1162"/>
         <source>Hide &amp;In-game</source>
         <translation>&amp;Invisible en jeu</translation>
     </message>
@@ -1700,7 +1780,7 @@ Appuyer sur 1 pour le mode par défaut</translation>
         <translation type="vanished">Modifier les &amp;propriétés...</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1161"/>
+        <location filename="../ProfileInterface.cpp" line="1168"/>
         <source>&amp;Export</source>
         <translation>&amp;Exporter</translation>
     </message>
@@ -1713,32 +1793,32 @@ Appuyer sur 1 pour le mode par défaut</translation>
         <translation type="vanished">Exporter comme &amp;GTA Snapmatic...</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1164"/>
+        <location filename="../ProfileInterface.cpp" line="1171"/>
         <source>&amp;View</source>
         <translation>&amp;Voir</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1167"/>
+        <location filename="../ProfileInterface.cpp" line="1174"/>
         <source>&amp;Remove</source>
         <translation>S&amp;upprimer</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1169"/>
+        <location filename="../ProfileInterface.cpp" line="1176"/>
         <source>&amp;Select</source>
         <translation>&amp;Sélectionner</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1170"/>
+        <location filename="../ProfileInterface.cpp" line="1177"/>
         <source>&amp;Deselect</source>
         <translation>&amp;Déselectionner</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1173"/>
+        <location filename="../ProfileInterface.cpp" line="1180"/>
         <source>Select &amp;All</source>
         <translation>Sélectionner &amp;tout</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1177"/>
+        <location filename="../ProfileInterface.cpp" line="1184"/>
         <source>&amp;Deselect All</source>
         <translation>&amp;Déselectionner tout</translation>
     </message>
@@ -1912,7 +1992,7 @@ Appuyer sur 1 pour le mode par défaut</translation>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="312"/>
-        <location filename="../OptionsDialog.cpp" line="491"/>
+        <location filename="../OptionsDialog.cpp" line="564"/>
         <location filename="../UserInterface.cpp" line="103"/>
         <location filename="../UserInterface.cpp" line="523"/>
         <source>Select GTA V Folder...</source>
diff --git a/res/gta5sync_ru.qm b/res/gta5sync_ru.qm
index 8579c33255d6edb154d0109202a0e5d00730acbe..71a4dafadf758d144676dcffe6583704e8e702e4 100644
GIT binary patch
delta 2372
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
PCwg5R(zs;Oi5dR~=z5{c

delta 2433
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
C@}nI9

diff --git a/res/gta5sync_ru.ts b/res/gta5sync_ru.ts
index f73b9a3..272f721 100644
--- a/res/gta5sync_ru.ts
+++ b/res/gta5sync_ru.ts
@@ -184,6 +184,7 @@ Grand Theft Auto V Snapmatic картинок и сохранений</translati
     <name>CrewDatabase</name>
     <message>
         <location filename="../CrewDatabase.cpp" line="102"/>
+        <location filename="../CrewDatabase.cpp" line="113"/>
         <source>No Crew</source>
         <translation>Вне банды</translation>
     </message>
@@ -325,12 +326,14 @@ Grand Theft Auto V Snapmatic картинок и сохранений</translati
     </message>
     <message>
         <location filename="../ImportDialog.cpp" line="105"/>
+        <location filename="../ProfileInterface.cpp" line="599"/>
         <source>Custom Avatar</source>
         <comment>Custom Avatar Description in SC, don&apos;t use Special Character!</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../ImportDialog.cpp" line="131"/>
+        <location filename="../ProfileInterface.cpp" line="618"/>
         <source>Custom Picture</source>
         <comment>Custom Picture Description in SC, don&apos;t use Special Character!</comment>
         <translation type="unfinished"></translation>
@@ -352,6 +355,24 @@ When you want to use it as Avatar the image will be detached!</source>
         <translation>Выбрать цвет...</translation>
     </message>
 </context>
+<context>
+    <name>JsonEditorDialog</name>
+    <message>
+        <location filename="../JsonEditorDialog.ui" line="14"/>
+        <source>Snapmatic JSON Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.ui" line="107"/>
+        <source>&amp;Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.ui" line="114"/>
+        <source>&amp;Close</source>
+        <translation type="unfinished">&amp;Закрыть</translation>
+    </message>
+</context>
 <context>
     <name>MapLocationDialog</name>
     <message>
@@ -392,7 +413,7 @@ Y: %2</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../MapLocationDialog.cpp" line="89"/>
+        <location filename="../MapLocationDialog.cpp" line="90"/>
         <source>X: %1
 Y: %2</source>
         <comment>X and Y position</comment>
@@ -534,56 +555,85 @@ Y: %2</translation>
         <translation>Имя</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="387"/>
+        <location filename="../OptionsDialog.ui" line="412"/>
+        <source>Language for Areas</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="431"/>
+        <source>Style</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="449"/>
+        <source>Style:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="474"/>
+        <source>Font</source>
+        <translation type="unfinished">Шрифт</translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="480"/>
+        <source>Always use Message Font (Windows 2003 and earlier)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Language</source>
-        <translation>Язык</translation>
+        <translation type="vanished">Язык</translation>
+    </message>
+    <message>
+        <location filename="../OptionsDialog.ui" line="387"/>
+        <source>Interface</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../OptionsDialog.ui" line="393"/>
-        <source>Interface</source>
+        <source>Language for Interface</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../OptionsDialog.ui" line="402"/>
         <location filename="../OptionsDialog.ui" line="421"/>
-        <location filename="../OptionsDialog.cpp" line="167"/>
-        <location filename="../OptionsDialog.cpp" line="215"/>
+        <location filename="../OptionsDialog.cpp" line="169"/>
+        <location filename="../OptionsDialog.cpp" line="217"/>
         <source>Current: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="412"/>
-        <source>Areas</source>
+        <location filename="../OptionsDialog.ui" line="437"/>
+        <source>Use Default Style (Restart)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="445"/>
+        <location filename="../OptionsDialog.ui" line="504"/>
         <source>Sync</source>
         <translation>Sync</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="451"/>
+        <location filename="../OptionsDialog.ui" line="510"/>
         <source>Sync is not implemented at current time</source>
         <translation>Синхронизация пока ещё не реализована</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="489"/>
+        <location filename="../OptionsDialog.ui" line="548"/>
         <source>Apply changes</source>
         <translation>Применить изменения</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="492"/>
+        <location filename="../OptionsDialog.ui" line="551"/>
         <source>&amp;OK</source>
         <extracomment>OK, Cancel, Apply</extracomment>
         <translation>&amp;ОК</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="505"/>
+        <location filename="../OptionsDialog.ui" line="564"/>
         <source>Discard changes</source>
         <translation>Отвергнуть изменения</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.ui" line="508"/>
+        <location filename="../OptionsDialog.ui" line="567"/>
         <source>&amp;Cancel</source>
         <extracomment>OK, Cancel, Apply</extracomment>
         <translation>От&amp;мена</translation>
@@ -600,37 +650,37 @@ Y: %2</translation>
         <translation type="vanished">%1 (%2 если имеется)</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="131"/>
+        <location filename="../OptionsDialog.cpp" line="133"/>
         <source>%1 (Next Closest Language)</source>
         <comment>First language a person can talk with a different person/application. &quot;Native&quot; or &quot;Not Native&quot;.</comment>
         <translation></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="131"/>
+        <location filename="../OptionsDialog.cpp" line="133"/>
         <source>System</source>
         <comment>System in context of System default</comment>
         <translation>Система</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="133"/>
+        <location filename="../OptionsDialog.cpp" line="135"/>
         <source>%1 (Closest to Interface)</source>
         <comment>Next closest language compared to the Interface</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="133"/>
+        <location filename="../OptionsDialog.cpp" line="135"/>
         <source>Auto</source>
         <comment>Automatic language choice.</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="335"/>
+        <location filename="../OptionsDialog.cpp" line="408"/>
         <source>%1</source>
         <comment>%1</comment>
         <translation>%1</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="335"/>
+        <location filename="../OptionsDialog.cpp" line="408"/>
         <source>The new Custom Folder will initialise after you restart %1.</source>
         <translation>Другая папка будет загружена после перезапуска %1.</translation>
     </message>
@@ -643,15 +693,15 @@ Y: %2</translation>
         <translation type="vanished">Язык изменится после перезапуска %1.</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="345"/>
+        <location filename="../OptionsDialog.cpp" line="418"/>
         <source>No Profile</source>
         <comment>No Profile, as default</comment>
         <translation>Нет профиля</translation>
     </message>
     <message>
-        <location filename="../OptionsDialog.cpp" line="353"/>
-        <location filename="../OptionsDialog.cpp" line="357"/>
-        <location filename="../OptionsDialog.cpp" line="359"/>
+        <location filename="../OptionsDialog.cpp" line="426"/>
+        <location filename="../OptionsDialog.cpp" line="430"/>
+        <location filename="../OptionsDialog.cpp" line="432"/>
         <source>Profile: %1</source>
         <translation>Профиль: %1</translation>
     </message>
@@ -731,8 +781,8 @@ Y: %2</translation>
         <translation type="vanished">Эксп&amp;ортировать как картинку JPG...</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="145"/>
-        <location filename="../ProfileInterface.cpp" line="1162"/>
+        <location filename="../PictureDialog.cpp" line="148"/>
+        <location filename="../ProfileInterface.cpp" line="1169"/>
         <source>Export as &amp;Picture...</source>
         <translation>Экспортировать как &amp;картинку...</translation>
     </message>
@@ -741,8 +791,8 @@ Y: %2</translation>
         <translation type="vanished">Экс&amp;портировать как GTA Snapmatic...</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="146"/>
-        <location filename="../ProfileInterface.cpp" line="1163"/>
+        <location filename="../PictureDialog.cpp" line="149"/>
+        <location filename="../ProfileInterface.cpp" line="1170"/>
         <source>Export as &amp;Snapmatic...</source>
         <translation>Экспортировать как &amp;Snapmatic...</translation>
     </message>
@@ -751,18 +801,23 @@ Y: %2</translation>
         <translation type="obsolete">&amp;Правка</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="148"/>
         <source>Open &amp;Map View...</source>
-        <translation>Открыть &amp;карту...</translation>
+        <translation type="vanished">Открыть &amp;карту...</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="150"/>
-        <location filename="../ProfileInterface.cpp" line="1160"/>
+        <location filename="../PictureDialog.cpp" line="151"/>
+        <location filename="../ProfileInterface.cpp" line="1164"/>
         <source>&amp;Edit Properties...</source>
         <translation>&amp;Изменить свойства...</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="373"/>
+        <location filename="../PictureDialog.cpp" line="153"/>
+        <location filename="../ProfileInterface.cpp" line="1166"/>
+        <source>Open &amp;Map Viewer...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PictureDialog.cpp" line="380"/>
         <source>Key 1 - Avatar Preview Mode
 Key 2 - Toggle Overlay
 Arrow Keys - Navigate</source>
@@ -771,31 +826,31 @@ Arrow Keys - Navigate</source>
 Стрелки - Навигация</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="433"/>
-        <location filename="../PictureDialog.cpp" line="476"/>
+        <location filename="../PictureDialog.cpp" line="439"/>
+        <location filename="../PictureDialog.cpp" line="473"/>
         <source>Snapmatic Picture Viewer</source>
         <translation>Просмотрщик фотографий Snapmatic</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="433"/>
-        <location filename="../PictureDialog.cpp" line="476"/>
+        <location filename="../PictureDialog.cpp" line="439"/>
+        <location filename="../PictureDialog.cpp" line="473"/>
         <source>Failed at %1</source>
         <translation>Ошибка при %1</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="475"/>
-        <location filename="../PictureDialog.cpp" line="589"/>
+        <location filename="../PictureDialog.cpp" line="472"/>
+        <location filename="../PictureDialog.cpp" line="591"/>
         <source>No Crew</source>
         <translation>Вне банды</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="475"/>
-        <location filename="../PictureDialog.cpp" line="614"/>
+        <location filename="../PictureDialog.cpp" line="472"/>
+        <location filename="../PictureDialog.cpp" line="618"/>
         <source>No Players</source>
         <translation>Игроков нет</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="560"/>
+        <location filename="../PictureDialog.cpp" line="557"/>
         <source>Avatar Preview Mode
 Press 1 for Default View</source>
         <translation>Режим просмотра аватарок
@@ -810,7 +865,7 @@ Press 1 for Default View</source>
         <translation type="vanished">Без группы</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="475"/>
+        <location filename="../PictureDialog.cpp" line="472"/>
         <source>Unknown Location</source>
         <translation>Неизвестное место</translation>
     </message>
@@ -947,6 +1002,12 @@ Press 1 for Default View</source>
         <source>Failed to copy current Snapmatic picture</source>
         <translation type="vanished">Не удалось скопировать текущую картинку Snapmatic</translation>
     </message>
+    <message>
+        <location filename="../PictureDialog.cpp" line="155"/>
+        <location filename="../ProfileInterface.cpp" line="1167"/>
+        <source>Open &amp;JSON Editor...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ProfileInterface</name>
@@ -998,30 +1059,30 @@ Press 1 for Default View</source>
         <translation type="obsolete">Закрыть профиль</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="131"/>
+        <location filename="../ProfileInterface.cpp" line="134"/>
         <source>Loading...</source>
         <translation>Загрузка...</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="413"/>
-        <location filename="../ProfileInterface.cpp" line="478"/>
+        <location filename="../ProfileInterface.cpp" line="416"/>
+        <location filename="../ProfileInterface.cpp" line="483"/>
         <source>Import...</source>
         <translation>Импортировать...</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="414"/>
-        <location filename="../ProfileInterface.cpp" line="457"/>
-        <location filename="../ProfileInterface.cpp" line="509"/>
-        <location filename="../ProfileInterface.cpp" line="529"/>
-        <location filename="../ProfileInterface.cpp" line="545"/>
-        <location filename="../ProfileInterface.cpp" line="661"/>
-        <location filename="../ProfileInterface.cpp" line="742"/>
-        <location filename="../ProfileInterface.cpp" line="747"/>
-        <location filename="../ProfileInterface.cpp" line="757"/>
-        <location filename="../ProfileInterface.cpp" line="762"/>
-        <location filename="../ProfileInterface.cpp" line="773"/>
-        <location filename="../ProfileInterface.cpp" line="810"/>
-        <location filename="../ProfileInterface.cpp" line="816"/>
+        <location filename="../ProfileInterface.cpp" line="417"/>
+        <location filename="../ProfileInterface.cpp" line="462"/>
+        <location filename="../ProfileInterface.cpp" line="515"/>
+        <location filename="../ProfileInterface.cpp" line="535"/>
+        <location filename="../ProfileInterface.cpp" line="551"/>
+        <location filename="../ProfileInterface.cpp" line="666"/>
+        <location filename="../ProfileInterface.cpp" line="746"/>
+        <location filename="../ProfileInterface.cpp" line="751"/>
+        <location filename="../ProfileInterface.cpp" line="761"/>
+        <location filename="../ProfileInterface.cpp" line="766"/>
+        <location filename="../ProfileInterface.cpp" line="777"/>
+        <location filename="../ProfileInterface.cpp" line="814"/>
+        <location filename="../ProfileInterface.cpp" line="820"/>
         <source>Import</source>
         <translation>Импортировать</translation>
     </message>
@@ -1030,31 +1091,31 @@ Press 1 for Default View</source>
         <translation type="vanished">Все файлы профиля (SGTA* PGTA*)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="431"/>
+        <location filename="../ProfileInterface.cpp" line="434"/>
         <location filename="../UserInterface.cpp" line="376"/>
         <source>Savegames files (SGTA*)</source>
         <translation>Файлы сохранения (SGTA*)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="432"/>
+        <location filename="../ProfileInterface.cpp" line="435"/>
         <location filename="../UserInterface.cpp" line="377"/>
         <source>Snapmatic pictures (PGTA*)</source>
         <translation>Картинка Snapmatic (PGTA*)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="434"/>
+        <location filename="../ProfileInterface.cpp" line="437"/>
         <location filename="../UserInterface.cpp" line="378"/>
         <source>All files (**)</source>
         <translation>Все файлы (**)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="479"/>
-        <location filename="../ProfileInterface.cpp" line="494"/>
+        <location filename="../ProfileInterface.cpp" line="484"/>
+        <location filename="../ProfileInterface.cpp" line="499"/>
         <source>Import file %1 of %2 files</source>
         <translation>Импортируются файлы %1 из %2</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="509"/>
+        <location filename="../ProfileInterface.cpp" line="515"/>
         <source>Import failed with...
 
 %1</source>
@@ -1063,13 +1124,13 @@ Press 1 for Default View</source>
 %1</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="529"/>
+        <location filename="../ProfileInterface.cpp" line="535"/>
         <location filename="../UserInterface.cpp" line="418"/>
         <source>Failed to read Snapmatic picture</source>
         <translation>Не удалось загрузить картинку Snapmatic</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="545"/>
+        <location filename="../ProfileInterface.cpp" line="551"/>
         <location filename="../UserInterface.cpp" line="434"/>
         <source>Failed to read Savegame file</source>
         <translation>Не удалось загрузить файл сохранения</translation>
@@ -1079,14 +1140,14 @@ Press 1 for Default View</source>
         <translation type="vanished">Не получилось импортировать %1 из-за неправильного формата файла</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="457"/>
-        <location filename="../ProfileInterface.cpp" line="747"/>
+        <location filename="../ProfileInterface.cpp" line="462"/>
+        <location filename="../ProfileInterface.cpp" line="751"/>
         <location filename="../UserInterface.cpp" line="466"/>
         <source>No valid file is selected</source>
         <translation>Выбранный файл неверен</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="65"/>
+        <location filename="../ProfileInterface.cpp" line="68"/>
         <source>Enabled pictures: %1 of %2</source>
         <translation>Включенные картинки: %1 из %2</translation>
     </message>
@@ -1099,93 +1160,93 @@ Press 1 for Default View</source>
         <translation type="vanished">Все изображения (*.jpg *.png)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="429"/>
+        <location filename="../ProfileInterface.cpp" line="432"/>
         <source>Importable files (%1)</source>
         <translation>Файлы для импорта (%1)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="433"/>
+        <location filename="../ProfileInterface.cpp" line="436"/>
         <source>All image files (%1)</source>
         <translation>Все файлы изображений (%1)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="661"/>
+        <location filename="../ProfileInterface.cpp" line="666"/>
         <source>Can&apos;t import %1 because file can&apos;t be parsed properly</source>
         <translation>Не получилось импортировать %1, файл не может быть правильно обработан</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="742"/>
+        <location filename="../ProfileInterface.cpp" line="746"/>
         <source>Can&apos;t import %1 because file format can&apos;t be detected</source>
         <translation>Не получилось импортировать %1, не удалось определить формат файла</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="757"/>
+        <location filename="../ProfileInterface.cpp" line="761"/>
         <source>Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e</source>
         <translation>Не удалось импортировать картинку Snapmatic, название не начинается с PGTA или не заканчивается с .g5e</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="762"/>
+        <location filename="../ProfileInterface.cpp" line="766"/>
         <source>Failed to import the Snapmatic picture, the picture is already in the game</source>
         <translation>Не удалось импортировать картинку Snapmatic, картинка уже в игре</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="773"/>
+        <location filename="../ProfileInterface.cpp" line="777"/>
         <source>Failed to import the Snapmatic picture, can&apos;t copy the file into profile</source>
         <translation>Не удалось импортировать картинку Snapmatic, не получилось скопировать файл в профиль</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="810"/>
+        <location filename="../ProfileInterface.cpp" line="814"/>
         <source>Failed to import the Savegame, can&apos;t copy the file into profile</source>
         <translation>Не удалось импортировать сохранение, не получилось скопировать файл в профиль</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="816"/>
+        <location filename="../ProfileInterface.cpp" line="820"/>
         <source>Failed to import the Savegame, no Savegame slot is left</source>
         <translation>Не удалось импортировать сохранение, нет пустых ячеек под сохранения</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="903"/>
-        <location filename="../ProfileInterface.cpp" line="921"/>
+        <location filename="../ProfileInterface.cpp" line="907"/>
+        <location filename="../ProfileInterface.cpp" line="925"/>
         <source>JPG pictures and GTA Snapmatic</source>
         <translation>Картинки JPG и GTA Snapmatic</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="904"/>
-        <location filename="../ProfileInterface.cpp" line="926"/>
+        <location filename="../ProfileInterface.cpp" line="908"/>
+        <location filename="../ProfileInterface.cpp" line="930"/>
         <source>JPG pictures only</source>
         <translation>Только картинки JPG</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="905"/>
-        <location filename="../ProfileInterface.cpp" line="930"/>
+        <location filename="../ProfileInterface.cpp" line="909"/>
+        <location filename="../ProfileInterface.cpp" line="934"/>
         <source>GTA Snapmatic only</source>
         <translation>Только GTA Snapmatic</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="964"/>
+        <location filename="../ProfileInterface.cpp" line="968"/>
         <source>Initialising export...</source>
         <translation>Подготовка к экспорту...</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1017"/>
-        <location filename="../ProfileInterface.cpp" line="1059"/>
+        <location filename="../ProfileInterface.cpp" line="1021"/>
+        <location filename="../ProfileInterface.cpp" line="1063"/>
         <source>No Snapmatic pictures or Savegames files are selected</source>
         <translation>Не выделены ни один Snapmatic или сохранение</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1025"/>
-        <location filename="../ProfileInterface.cpp" line="1053"/>
-        <location filename="../ProfileInterface.cpp" line="1059"/>
+        <location filename="../ProfileInterface.cpp" line="1029"/>
+        <location filename="../ProfileInterface.cpp" line="1057"/>
+        <location filename="../ProfileInterface.cpp" line="1063"/>
         <source>Remove selected</source>
         <translation>Снять выделение</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1025"/>
+        <location filename="../ProfileInterface.cpp" line="1029"/>
         <source>You really want remove the selected Snapmatic picutres and Savegame files?</source>
         <translation>Точно ли хочешь удалить выбранные картинки Snapmatic и файлы сохранений?</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1053"/>
+        <location filename="../ProfileInterface.cpp" line="1057"/>
         <source>Failed at remove the complete selected Snapmatic pictures and/or Savegame files</source>
         <translation>Не удалось удалить полностью выбранные картинки Snapmatic и/или файлы сохранений</translation>
     </message>
@@ -1206,20 +1267,20 @@ Press 1 for Default View</source>
         <translation type="obsolete">Не получилось имортировать копию сохранения, потому что не осталось свободных под них слотов</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="880"/>
-        <location filename="../ProfileInterface.cpp" line="918"/>
-        <location filename="../ProfileInterface.cpp" line="997"/>
-        <location filename="../ProfileInterface.cpp" line="1017"/>
+        <location filename="../ProfileInterface.cpp" line="884"/>
+        <location filename="../ProfileInterface.cpp" line="922"/>
+        <location filename="../ProfileInterface.cpp" line="1001"/>
+        <location filename="../ProfileInterface.cpp" line="1021"/>
         <source>Export selected</source>
         <translation>Экспортировать выделенное</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="918"/>
+        <location filename="../ProfileInterface.cpp" line="922"/>
         <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>%1Эскпортировать картинки Snapmatic%2&lt;br&gt;&lt;br&gt;Картинки JPG можно открыть любым просмотрщиком&lt;br&gt;Картинки формата GTA Snapmatic можно снова импортировать в игру&lt;br&gt;&lt;br&gt;Экспортировать как:</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="963"/>
+        <location filename="../ProfileInterface.cpp" line="967"/>
         <source>Export selected...</source>
         <translation>Экпортировать выделенное...</translation>
     </message>
@@ -1228,7 +1289,7 @@ Press 1 for Default View</source>
         <translation type="vanished">Подготавливаю эскпорт...</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="997"/>
+        <location filename="../ProfileInterface.cpp" line="1001"/>
         <source>Export failed with...
 
 %1</source>
@@ -1249,7 +1310,7 @@ Press 1 for Default View</source>
         <translation>Все файлы профиля (*.g5e SGTA* PGTA*)</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="430"/>
+        <location filename="../ProfileInterface.cpp" line="433"/>
         <location filename="../UserInterface.cpp" line="375"/>
         <source>GTA V Export (*.g5e)</source>
         <translation>GTA V Export (*.g5e)</translation>
@@ -1258,15 +1319,20 @@ Press 1 for Default View</source>
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="../main.cpp" line="67"/>
+        <location filename="../main.cpp" line="87"/>
         <source>Font</source>
         <translation>Шрифт</translation>
     </message>
     <message>
-        <location filename="../main.cpp" line="67"/>
+        <location filename="../main.cpp" line="87"/>
         <source>Selected Font: %1</source>
         <translation>Выбранный шрифт: %1</translation>
     </message>
+    <message>
+        <location filename="../main.cpp" line="108"/>
+        <source>&lt;h4&gt;Welcome to %1!&lt;/h4&gt;You want to configure %1 before you start using it?</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SavegameDialog</name>
@@ -1400,32 +1466,32 @@ Press 1 for Default View</source>
         <translation>Не удалось удалить сохранение %1</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1198"/>
+        <location filename="../ProfileInterface.cpp" line="1205"/>
         <source>&amp;View</source>
         <translation>&amp;Просмотр</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1200"/>
+        <location filename="../ProfileInterface.cpp" line="1207"/>
         <source>&amp;Remove</source>
         <translation>&amp;Удалить</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1202"/>
+        <location filename="../ProfileInterface.cpp" line="1209"/>
         <source>&amp;Select</source>
         <translation>&amp;Выбрать</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1203"/>
+        <location filename="../ProfileInterface.cpp" line="1210"/>
         <source>&amp;Deselect</source>
         <translation>Сн&amp;ять выбор</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1206"/>
+        <location filename="../ProfileInterface.cpp" line="1213"/>
         <source>Select &amp;All</source>
         <translation>В&amp;ыбрать все</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1210"/>
+        <location filename="../ProfileInterface.cpp" line="1217"/>
         <source>&amp;Deselect All</source>
         <translation>Снять выбо&amp;р со всех</translation>
     </message>
@@ -1435,7 +1501,7 @@ Press 1 for Default View</source>
         <translation>Копировать сохранение</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1199"/>
+        <location filename="../ProfileInterface.cpp" line="1206"/>
         <source>&amp;Export</source>
         <translation>&amp;Экспортировать</translation>
     </message>
@@ -1495,8 +1561,13 @@ Press 1 for Default View</source>
     <message>
         <location filename="../SnapmaticEditor.ui" line="14"/>
         <location filename="../SnapmaticEditor.ui" line="81"/>
-        <location filename="../PictureDialog.cpp" line="727"/>
-        <location filename="../SnapmaticEditor.cpp" line="241"/>
+        <location filename="../JsonEditorDialog.cpp" line="83"/>
+        <location filename="../JsonEditorDialog.cpp" line="130"/>
+        <location filename="../JsonEditorDialog.cpp" line="136"/>
+        <location filename="../JsonEditorDialog.cpp" line="148"/>
+        <location filename="../PictureDialog.cpp" line="732"/>
+        <location filename="../SnapmaticEditor.cpp" line="252"/>
+        <location filename="../SnapmaticWidget.cpp" line="332"/>
         <source>Snapmatic Properties</source>
         <translation>Свойства Snapmatic</translation>
     </message>
@@ -1537,7 +1608,7 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../SnapmaticEditor.ui" line="113"/>
-        <location filename="../SnapmaticEditor.cpp" line="200"/>
+        <location filename="../SnapmaticEditor.cpp" line="211"/>
         <source>Crew: %1 (%2)</source>
         <translation>Банда: %1 (%2)</translation>
     </message>
@@ -1547,20 +1618,20 @@ Press 1 for Default View</source>
         <translation>Meme</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="291"/>
+        <location filename="../SnapmaticEditor.cpp" line="302"/>
         <source>Snapmatic Title</source>
         <translation>Заголовок Snapmatic</translation>
     </message>
     <message>
         <location filename="../SnapmaticEditor.ui" line="126"/>
-        <location filename="../SnapmaticEditor.cpp" line="185"/>
+        <location filename="../SnapmaticEditor.cpp" line="196"/>
         <source>Title: %1 (%2)</source>
         <translation>Заголовок: %1 (%2)</translation>
     </message>
     <message>
         <location filename="../SnapmaticEditor.ui" line="136"/>
-        <location filename="../SnapmaticEditor.cpp" line="189"/>
-        <location filename="../SnapmaticEditor.cpp" line="193"/>
+        <location filename="../SnapmaticEditor.cpp" line="200"/>
+        <location filename="../SnapmaticEditor.cpp" line="204"/>
         <source>Appropriate: %1</source>
         <translation>Подходит: %1</translation>
     </message>
@@ -1590,41 +1661,54 @@ Press 1 for Default View</source>
         <translation>&amp;Отмена</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="184"/>
-        <location filename="../SnapmaticEditor.cpp" line="199"/>
+        <location filename="../SnapmaticEditor.cpp" line="195"/>
+        <location filename="../SnapmaticEditor.cpp" line="210"/>
         <source>Edit</source>
         <translation>Правка</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="189"/>
+        <location filename="../SnapmaticEditor.cpp" line="200"/>
         <source>Yes</source>
         <comment>Yes, should work fine</comment>
         <translation>Да</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="193"/>
+        <location filename="../SnapmaticEditor.cpp" line="204"/>
         <source>No</source>
         <comment>No, could lead to issues</comment>
         <translation>Нет</translation>
     </message>
     <message>
-        <location filename="../PictureDialog.cpp" line="727"/>
-        <location filename="../SnapmaticEditor.cpp" line="241"/>
+        <location filename="../JsonEditorDialog.cpp" line="83"/>
+        <source>&lt;h4&gt;Unsaved changes detected&lt;/h4&gt;You want to save the JSON content before you quit?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.cpp" line="130"/>
+        <location filename="../JsonEditorDialog.cpp" line="148"/>
+        <source>Patching of Snapmatic Properties failed because of JSON Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../JsonEditorDialog.cpp" line="136"/>
+        <location filename="../PictureDialog.cpp" line="732"/>
+        <location filename="../SnapmaticEditor.cpp" line="252"/>
+        <location filename="../SnapmaticWidget.cpp" line="332"/>
         <source>Patching of Snapmatic Properties failed because of I/O Error</source>
         <translation>Не удалось измененить свойства Snapmatic из-за проблемы ввода/вывода</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="291"/>
+        <location filename="../SnapmaticEditor.cpp" line="302"/>
         <source>New Snapmatic title:</source>
         <translation>Новый заголовок Snapmatic:</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="320"/>
+        <location filename="../SnapmaticEditor.cpp" line="331"/>
         <source>Snapmatic Crew</source>
         <translation>Банда на Snapmatic</translation>
     </message>
     <message>
-        <location filename="../SnapmaticEditor.cpp" line="320"/>
+        <location filename="../SnapmaticEditor.cpp" line="331"/>
         <source>New Snapmatic crew:</source>
         <translation>Новая банда на Snapmatic:</translation>
     </message>
@@ -1676,33 +1760,33 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../SnapmaticWidget.ui" line="152"/>
-        <location filename="../SnapmaticWidget.cpp" line="144"/>
-        <location filename="../SnapmaticWidget.cpp" line="153"/>
+        <location filename="../SnapmaticWidget.cpp" line="146"/>
+        <location filename="../SnapmaticWidget.cpp" line="155"/>
         <source>Delete picture</source>
         <translation>Удалить картинку</translation>
     </message>
     <message>
-        <location filename="../SnapmaticWidget.cpp" line="144"/>
+        <location filename="../SnapmaticWidget.cpp" line="146"/>
         <source>Are you sure to delete %1 from your Snapmatic pictures?</source>
         <translation>Уверены, что хотите удалить %1 из коллекции картинок Snapmatic?</translation>
     </message>
     <message>
-        <location filename="../SnapmaticWidget.cpp" line="153"/>
+        <location filename="../SnapmaticWidget.cpp" line="155"/>
         <source>Failed at deleting %1 from your Snapmatic pictures</source>
         <translation>Не удалось удалить %1 из колелкции картинок Snapmatic </translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1151"/>
+        <location filename="../ProfileInterface.cpp" line="1155"/>
         <source>Edi&amp;t</source>
         <translation>&amp;Правка</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1154"/>
+        <location filename="../ProfileInterface.cpp" line="1158"/>
         <source>Show &amp;In-game</source>
         <translation>Показывать в &amp;игре</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1158"/>
+        <location filename="../ProfileInterface.cpp" line="1162"/>
         <source>Hide &amp;In-game</source>
         <translation>Ск&amp;рыть в игре</translation>
     </message>
@@ -1711,7 +1795,7 @@ Press 1 for Default View</source>
         <translation type="vanished">&amp;Изменить свойства...</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1161"/>
+        <location filename="../ProfileInterface.cpp" line="1168"/>
         <source>&amp;Export</source>
         <translation>&amp;Экспорт</translation>
     </message>
@@ -1724,32 +1808,32 @@ Press 1 for Default View</source>
         <translation type="vanished">Экс&amp;портировать как GTA Snapmatic...</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1164"/>
+        <location filename="../ProfileInterface.cpp" line="1171"/>
         <source>&amp;View</source>
         <translation>По&amp;казать</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1167"/>
+        <location filename="../ProfileInterface.cpp" line="1174"/>
         <source>&amp;Remove</source>
         <translation>У&amp;далить</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1169"/>
+        <location filename="../ProfileInterface.cpp" line="1176"/>
         <source>&amp;Select</source>
         <translation>&amp;Выделить</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1170"/>
+        <location filename="../ProfileInterface.cpp" line="1177"/>
         <source>&amp;Deselect</source>
         <translation>Сн&amp;ять выделение</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1173"/>
+        <location filename="../ProfileInterface.cpp" line="1180"/>
         <source>Select &amp;All</source>
         <translation>В&amp;ыбрать все</translation>
     </message>
     <message>
-        <location filename="../ProfileInterface.cpp" line="1177"/>
+        <location filename="../ProfileInterface.cpp" line="1184"/>
         <source>&amp;Deselect All</source>
         <translation>Снять выбо&amp;р со всех</translation>
     </message>
@@ -1977,7 +2061,7 @@ Press 1 for Default View</source>
     </message>
     <message>
         <location filename="../UserInterface.ui" line="312"/>
-        <location filename="../OptionsDialog.cpp" line="491"/>
+        <location filename="../OptionsDialog.cpp" line="564"/>
         <location filename="../UserInterface.cpp" line="103"/>
         <location filename="../UserInterface.cpp" line="523"/>
         <source>Select GTA V Folder...</source>