diff --git a/.travis.yml b/.travis.yml index 18df08f..7397324 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-dev6\\\\\\\"" 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-dev7\\\\\\\"" DEFINES+=GTA5SYNC_QCONF ../../gta5view.pro - make -j 4 - - sudo checkinstall -D --default --nodoc --install=no --pkgname=gta5view-qt5 --pkgversion=$PACKAGE_VERSION --pkgrelease=dev6 --pkggroup=utility --maintainer="Syping on Travis \" --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=dev7 --pkggroup=utility --maintainer="Syping on Travis \" --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-dev6\\\\\\\"" 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-dev7\\\\\\\"" DEFINES+=GTA5SYNC_QCONF ../../gta5view.pro - make -j 4 - - sudo checkinstall -D --default --nodoc --install=no --pkgname=gta5view-qt4 --pkgversion=$PACKAGE_VERSION --pkgrelease=dev6 --pkggroup=utility --maintainer="Syping on Travis \" --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=dev7 --pkggroup=utility --maintainer="Syping on Travis \" --requires=libqtcore4,libqtgui4,libqt4-network,qtcore4-l10n --conflicts=gta5view,gta5view-qt5 --replaces=gta5view,gta5view-qt5 --pakdir=../../package - cd .. deploy: diff --git a/AboutDialog.cpp b/AboutDialog.cpp index 7bb069f..bf2d4ed 100755 --- a/AboutDialog.cpp +++ b/AboutDialog.cpp @@ -28,10 +28,6 @@ AboutDialog::AboutDialog(QWidget *parent) : { // Set Window Flags setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); -#ifdef Q_OS_LINUX - // for stupid Window Manager (GNOME 3 should feel triggered) - setWindowFlags(windowFlags()^Qt::Dialog^Qt::Window); -#endif // Build Strings QString appVersion = qApp->applicationVersion(); diff --git a/ImageEditorDialog.cpp b/ImageEditorDialog.cpp new file mode 100644 index 0000000..7fffbd9 --- /dev/null +++ b/ImageEditorDialog.cpp @@ -0,0 +1,185 @@ +/***************************************************************************** +* gta5sync GRAND THEFT AUTO V SYNC +* Copyright (C) 2016-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 . +*****************************************************************************/ + +#include "ImageEditorDialog.h" +#include "ui_ImageEditorDialog.h" +#include "ProfileInterface.h" +#include "SidebarGenerator.h" +#include "StandardPaths.h" +#include "ImportDialog.h" +#include "AppEnv.h" +#include "config.h" +#include +#include +#include +#include + +ImageEditorDialog::ImageEditorDialog(SnapmaticPicture *picture, QString profileName, QWidget *parent) : + QDialog(parent), smpic(picture), profileName(profileName), + ui(new Ui::ImageEditorDialog) +{ + // Set Window Flags + setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); + + ui->setupUi(this); + ui->cmdClose->setFocus(); + + // DPI calculation + qreal screenRatio = AppEnv::screenRatio(); + + snapmaticResolutionLW = 516 * screenRatio; // 430 + snapmaticResolutionLH = 288 * screenRatio; // 240 + ui->labPicture->setMinimumSize(snapmaticResolutionLW, snapmaticResolutionLH); + ui->labCapacity->setText(tr("Capacity: %1").arg(QString::number(qRound((double)picture->getContentMaxLength() / 1024)) % " KB")); + + imageIsChanged = false; + pictureCache = picture->getImage(); + ui->labPicture->setPixmap(QPixmap::fromImage(pictureCache).scaled(snapmaticResolutionLW, snapmaticResolutionLH, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + + setMaximumSize(sizeHint()); + setMinimumSize(sizeHint()); + setFixedSize(sizeHint()); +} + +ImageEditorDialog::~ImageEditorDialog() +{ + delete ui; +} + +void ImageEditorDialog::on_cmdClose_clicked() +{ + close(); +} + +void ImageEditorDialog::on_cmdReplace_clicked() +{ + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("FileDialogs"); + bool dontUseNativeDialog = settings.value("DontUseNativeDialog", false).toBool(); + settings.beginGroup("ImportReplace"); + +fileDialogPreOpen: //Work? + QFileDialog fileDialog(this); + fileDialog.setFileMode(QFileDialog::ExistingFile); + fileDialog.setViewMode(QFileDialog::Detail); + fileDialog.setAcceptMode(QFileDialog::AcceptOpen); + fileDialog.setOption(QFileDialog::DontUseNativeDialog, dontUseNativeDialog); + fileDialog.setWindowFlags(fileDialog.windowFlags()^Qt::WindowContextHelpButtonHint); + fileDialog.setWindowTitle(ProfileInterface::tr("Import...")); + fileDialog.setLabelText(QFileDialog::Accept, ProfileInterface::tr("Import")); + + // Getting readable Image formats + QString imageFormatsStr = " "; + for (QByteArray imageFormat : QImageReader::supportedImageFormats()) + { + imageFormatsStr += QString("*.") % QString::fromUtf8(imageFormat).toLower() % " "; + } + + QStringList filters; + filters << ProfileInterface::tr("All image files (%1)").arg(imageFormatsStr.trimmed()); + filters << ProfileInterface::tr("All files (**)"); + fileDialog.setNameFilters(filters); + + QList sidebarUrls = SidebarGenerator::generateSidebarUrls(fileDialog.sidebarUrls()); + + fileDialog.setSidebarUrls(sidebarUrls); + fileDialog.setDirectory(settings.value(profileName % "+Directory", StandardPaths::documentsLocation()).toString()); + fileDialog.restoreGeometry(settings.value(profileName % "+Geometry", "").toByteArray()); + + if (fileDialog.exec()) + { + QStringList selectedFiles = fileDialog.selectedFiles(); + if (selectedFiles.length() == 1) + { + QString selectedFile = selectedFiles.at(0); + QString selectedFileName = QFileInfo(selectedFile).fileName(); + + QFile snapmaticFile(selectedFile); + if (!snapmaticFile.open(QFile::ReadOnly)) + { + QMessageBox::warning(this, ProfileInterface::tr("Import"), ProfileInterface::tr("Can't import %1 because file can't be open").arg("\""+selectedFileName+"\"")); + goto fileDialogPreOpen; + } + QImage *importImage = new QImage(); + QImageReader snapmaticImageReader; + snapmaticImageReader.setDecideFormatFromContent(true); + snapmaticImageReader.setDevice(&snapmaticFile); + if (!snapmaticImageReader.read(importImage)) + { + QMessageBox::warning(this, ProfileInterface::tr("Import"), ProfileInterface::tr("Can't import %1 because file can't be parsed properly").arg("\""+selectedFileName+"\"")); + delete importImage; + goto fileDialogPreOpen; + } + ImportDialog *importDialog = new ImportDialog(this); + importDialog->setImage(importImage); + importDialog->setModal(true); + importDialog->show(); + importDialog->exec(); + if (importDialog->isImportAgreed()) + { + pictureCache = importDialog->image(); + ui->labPicture->setPixmap(QPixmap::fromImage(pictureCache).scaled(snapmaticResolutionLW, snapmaticResolutionLH, Qt::KeepAspectRatio, Qt::SmoothTransformation)); + imageIsChanged = true; + } + delete importDialog; + } + } + + settings.setValue(profileName % "+Geometry", fileDialog.saveGeometry()); + settings.setValue(profileName % "+Directory", fileDialog.directory().absolutePath()); + settings.endGroup(); + settings.endGroup(); +} + +void ImageEditorDialog::on_cmdSave_clicked() +{ + if (imageIsChanged) + { + const QByteArray previousPicture = smpic->getPictureStream(); + bool success = smpic->setImage(pictureCache); + if (success) + { + QString currentFilePath = smpic->getPictureFilePath(); + QString originalFilePath = smpic->getOriginalPictureFilePath(); + QString backupFileName = originalFilePath % ".bak"; + if (!QFile::exists(backupFileName)) + { + QFile::copy(currentFilePath, backupFileName); + } + if (!smpic->exportPicture(currentFilePath)) + { + smpic->setPictureStream(previousPicture); + QMessageBox::warning(this, tr("Snapmatic Image Editor"), tr("Patching of Snapmatic Image failed because of I/O Error")); + return; + } + smpic->emitCustomSignal("PictureUpdated"); + } + else + { + QMessageBox::warning(this, tr("Snapmatic Image Editor"), tr("Patching of Snapmatic Image failed because of Image Error")); + return; + } + } + close(); +} + +void ImageEditorDialog::on_cmdQuestion_clicked() +{ + QMessageBox::information(this, tr("Snapmatic Image Editor"), tr("Every taken Snapmatic have a different Capacity, a Snapmatic with higher Capacity can store a picture with better quality.")); + +} diff --git a/ImageEditorDialog.h b/ImageEditorDialog.h new file mode 100644 index 0000000..a9417cd --- /dev/null +++ b/ImageEditorDialog.h @@ -0,0 +1,53 @@ +/***************************************************************************** +* gta5sync GRAND THEFT AUTO V SYNC +* Copyright (C) 2016-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 . +*****************************************************************************/ + +#ifndef IMAGEEDITORDIALOG_H +#define IMAGEEDITORDIALOG_H + +#include "SnapmaticPicture.h" +#include + +namespace Ui { +class ImageEditorDialog; +} + +class ImageEditorDialog : public QDialog +{ + Q_OBJECT + +public: + explicit ImageEditorDialog(SnapmaticPicture *picture, QString profileName, QWidget *parent = 0); + ~ImageEditorDialog(); + +private slots: + void on_cmdClose_clicked(); + void on_cmdReplace_clicked(); + void on_cmdSave_clicked(); + void on_cmdQuestion_clicked(); + +private: + SnapmaticPicture *smpic; + QString profileName; + Ui::ImageEditorDialog *ui; + int snapmaticResolutionLW; + int snapmaticResolutionLH; + bool imageIsChanged; + QImage pictureCache; +}; + +#endif // IMAGEEDITORDIALOG_H diff --git a/ImageEditorDialog.ui b/ImageEditorDialog.ui new file mode 100644 index 0000000..090941c --- /dev/null +++ b/ImageEditorDialog.ui @@ -0,0 +1,130 @@ + + + ImageEditorDialog + + + + 0 + 0 + 516 + 335 + + + + Overwrite Image... + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 516 + 288 + + + + + + + + + + + QFrame::NoFrame + + + QFrame::Plain + + + 0 + + + + + + + + Capacity: %1 + + + + + + + ? + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + + + + + &Import... + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + &Overwrite + + + + + + + &Close + + + + + + + + + + + + + diff --git a/ImportDialog.cpp b/ImportDialog.cpp index 87a719f..e128f6f 100644 --- a/ImportDialog.cpp +++ b/ImportDialog.cpp @@ -18,13 +18,21 @@ #include "ImportDialog.h" #include "ui_ImportDialog.h" +#include "SidebarGenerator.h" +#include "StandardPaths.h" #include "AppEnv.h" +#include "config.h" +#include +#include #include +#include #include +#include #include #include #include #include +#include #include // IMAGES VALUES @@ -39,11 +47,7 @@ ImportDialog::ImportDialog(QWidget *parent) : ui(new Ui::ImportDialog) { // Set Window Flags - setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowMinMaxButtonsHint); -#ifdef Q_OS_LINUX - // for stupid Window Manager (GNOME 3 should feel triggered) - setWindowFlags(windowFlags()^Qt::Dialog^Qt::Window); -#endif + setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); ui->setupUi(this); importAgreed = false; @@ -62,11 +66,15 @@ ImportDialog::ImportDialog(QWidget *parent) : ui->cbIgnore->setChecked(false); ui->labColour->setText(tr("Background Colour: %1").arg(selectedColour.name())); + ui->labBackgroundImage->setText(tr("Background Image:")); + ui->cmdBackgroundWipe->setVisible(false); // DPI calculation qreal screenRatio = AppEnv::screenRatio(); - snapmaticResolutionLW = 430 * screenRatio; - snapmaticResolutionLH = 240 * screenRatio; + snapmaticResolutionLW = 516 * screenRatio; // 430 + snapmaticResolutionLH = 288 * screenRatio; // 240 + ui->labPicture->setMinimumSize(snapmaticResolutionLW, snapmaticResolutionLH); + ui->vlButtom->setSpacing(6 * screenRatio); #ifndef Q_OS_MAC ui->vlButtom->setContentsMargins(9 * screenRatio, 6 * screenRatio, 9 * screenRatio, 9 * screenRatio); @@ -80,9 +88,10 @@ ImportDialog::ImportDialog(QWidget *parent) : ui->vlButtom->setContentsMargins(9 * screenRatio, 6 * screenRatio, 9 * screenRatio, 9 * screenRatio); } #endif - setMinimumSize(430 * screenRatio, 380 * screenRatio); - setMaximumSize(430 * screenRatio, 380 * screenRatio); - setFixedSize(430 * screenRatio, 380 * screenRatio); + + setMaximumSize(sizeHint()); + setMinimumSize(sizeHint()); + setFixedSize(sizeHint()); } ImportDialog::~ImportDialog() @@ -97,6 +106,33 @@ void ImportDialog::processImage() QPixmap snapmaticPixmap(snapmaticResolutionW, snapmaticResolutionH); snapmaticPixmap.fill(selectedColour); QPainter snapmaticPainter(&snapmaticPixmap); + if (!backImage.isNull()) + { + if (!ui->cbStretch->isChecked()) + { + int diffWidth = 0; + int diffHeight = 0; + if (backImage.width() != snapmaticResolutionW) + { + diffWidth = snapmaticResolutionW - backImage.width(); + diffWidth = diffWidth / 2; + } + else if (backImage.height() != snapmaticResolutionH) + { + diffHeight = snapmaticResolutionH - backImage.height(); + diffHeight = diffHeight / 2; + } + snapmaticPainter.drawImage(0 + diffWidth, 0 + diffHeight, backImage); + } + else + { + snapmaticPainter.drawImage(0, 0, QImage(backImage).scaled(snapmaticResolutionW, snapmaticResolutionH, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + } + if (ui->cbAvatar->isChecked() && ui->cbForceAvatarColour->isChecked()) + { + snapmaticPainter.fillRect(snapmaticAvatarPlacementW, snapmaticAvatarPlacementH, snapmaticAvatarResolution, snapmaticAvatarResolution, selectedColour); + } + } if (insideAvatarZone) { // Avatar mode @@ -262,3 +298,95 @@ void ImportDialog::on_cmdColourChange_clicked() processImage(); } } + +void ImportDialog::on_cmdBackgroundChange_clicked() +{ + QSettings settings(GTA5SYNC_APPVENDOR, GTA5SYNC_APPSTR); + settings.beginGroup("FileDialogs"); + bool dontUseNativeDialog = settings.value("DontUseNativeDialog", false).toBool(); + settings.beginGroup("ImportBackground"); + +fileDialogPreOpen: + QFileDialog fileDialog(this); + fileDialog.setFileMode(QFileDialog::ExistingFiles); + fileDialog.setViewMode(QFileDialog::Detail); + fileDialog.setAcceptMode(QFileDialog::AcceptOpen); + fileDialog.setOption(QFileDialog::DontUseNativeDialog, dontUseNativeDialog); + fileDialog.setWindowFlags(fileDialog.windowFlags()^Qt::WindowContextHelpButtonHint); + fileDialog.setWindowTitle(QApplication::translate("ProfileInterface", "Import...")); + fileDialog.setLabelText(QFileDialog::Accept, QApplication::translate("ProfileInterface", "Import")); + + // Getting readable Image formats + QString imageFormatsStr = " "; + for (QByteArray imageFormat : QImageReader::supportedImageFormats()) + { + imageFormatsStr += QString("*.") % QString::fromUtf8(imageFormat).toLower() % " "; + } + + QStringList filters; + filters << QApplication::translate("ProfileInterface", "All image files (%1)").arg(imageFormatsStr.trimmed()); + filters << QApplication::translate("ProfileInterface", "All files (**)"); + fileDialog.setNameFilters(filters); + + QList sidebarUrls = SidebarGenerator::generateSidebarUrls(fileDialog.sidebarUrls()); + + fileDialog.setSidebarUrls(sidebarUrls); + fileDialog.setDirectory(settings.value("Directory", StandardPaths::documentsLocation()).toString()); + fileDialog.restoreGeometry(settings.value("Geometry", "").toByteArray()); + + if (fileDialog.exec()) + { + QStringList selectedFiles = fileDialog.selectedFiles(); + if (selectedFiles.length() == 1) + { + QString selectedFile = selectedFiles.at(0); + QString selectedFileName = QFileInfo(selectedFile).fileName(); + + QFile snapmaticFile(selectedFile); + if (!snapmaticFile.open(QFile::ReadOnly)) + { + QMessageBox::warning(this, QApplication::translate("ProfileInterface", "Import"), QApplication::translate("ProfileInterface", "Can't import %1 because file can't be open").arg("\""+selectedFileName+"\"")); + goto fileDialogPreOpen; + } + QImage importImage; + QImageReader snapmaticImageReader; + snapmaticImageReader.setDecideFormatFromContent(true); + snapmaticImageReader.setDevice(&snapmaticFile); + if (!snapmaticImageReader.read(&importImage)) + { + QMessageBox::warning(this, QApplication::translate("ProfileInterface", "Import"), QApplication::translate("ProfileInterface", "Can't import %1 because file can't be parsed properly").arg("\""+selectedFileName+"\"")); + goto fileDialogPreOpen; + } + backImage = importImage.scaled(snapmaticResolutionW, snapmaticResolutionH, Qt::KeepAspectRatio, Qt::SmoothTransformation); + backgroundPath = selectedFile; + ui->labBackgroundImage->setText(tr("Background Image: %1").arg(tr("File", "Background Image: File"))); + ui->cmdBackgroundWipe->setVisible(true); + processImage(); + } + } + + settings.setValue("Geometry", fileDialog.saveGeometry()); + settings.setValue("Directory", fileDialog.directory().absolutePath()); + settings.endGroup(); + settings.endGroup(); +} + +void ImportDialog::on_cmdBackgroundWipe_clicked() +{ + backImage = QImage(); + ui->labBackgroundImage->setText(tr("Background Image:")); + ui->cmdBackgroundWipe->setVisible(false); + processImage(); +} + +void ImportDialog::on_cbStretch_toggled(bool checked) +{ + Q_UNUSED(checked) + processImage(); +} + +void ImportDialog::on_cbForceAvatarColour_toggled(bool checked) +{ + Q_UNUSED(checked) + processImage(); +} diff --git a/ImportDialog.h b/ImportDialog.h index 92a27c6..e095ff2 100644 --- a/ImportDialog.h +++ b/ImportDialog.h @@ -45,11 +45,17 @@ private slots: void on_cmdOK_clicked(); void on_labPicture_labelPainted(); void on_cmdColourChange_clicked(); + void on_cmdBackgroundChange_clicked(); + void on_cmdBackgroundWipe_clicked(); + void on_cbStretch_toggled(bool checked); + void on_cbForceAvatarColour_toggled(bool checked); private: Ui::ImportDialog *ui; QImage avatarAreaImage; + QString backgroundPath; QString imageTitle; + QImage backImage; QImage workImage; QImage newImage; QColor selectedColour; diff --git a/ImportDialog.ui b/ImportDialog.ui index 06fc3b3..61c15fe 100644 --- a/ImportDialog.ui +++ b/ImportDialog.ui @@ -6,20 +6,14 @@ 0 0 - 430 - 380 + 516 + 425 - 430 - 380 - - - - - 430 - 380 + 516 + 425 @@ -45,8 +39,8 @@ - 430 - 240 + 516 + 288 @@ -87,40 +81,9 @@ - Settings + Picture - - - - - - Background Colour: <span style="color: %1">%1</span> - - - - - - - ... - - - - - - - Qt::Horizontal - - - - 0 - 0 - - - - - - @@ -155,7 +118,148 @@ - + + + Background + + + + + + + + + + Background Colour: <span style="color: %1">%1</span> + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ... + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Background Image: + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ... + + + + + + + X + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + Force Colour in Avatar Zone + + + + + + + true + + + Ignore Aspect Ratio + + + + + + + + + + Qt::Vertical diff --git a/JsonEditorDialog.cpp b/JsonEditorDialog.cpp index e10fdeb..8906c91 100644 --- a/JsonEditorDialog.cpp +++ b/JsonEditorDialog.cpp @@ -35,10 +35,6 @@ JsonEditorDialog::JsonEditorDialog(SnapmaticPicture *picture, QWidget *parent) : { // Set Window Flags setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowMinMaxButtonsHint); -#ifdef Q_OS_LINUX - // for stupid Window Manager (GNOME 3 should feel triggered) - setWindowFlags(windowFlags()^Qt::Dialog^Qt::Window); -#endif ui->setupUi(this); ui->cmdClose->setDefault(true); diff --git a/MapLocationDialog.cpp b/MapLocationDialog.cpp index 450c112..9ebb53f 100644 --- a/MapLocationDialog.cpp +++ b/MapLocationDialog.cpp @@ -29,10 +29,6 @@ MapLocationDialog::MapLocationDialog(double x, double y, QWidget *parent) : { // Set Window Flags setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); -#ifdef Q_OS_LINUX - // for stupid Window Manager (GNOME 3 should feel triggered) - setWindowFlags(windowFlags()^Qt::Dialog^Qt::Window); -#endif ui->setupUi(this); ui->cmdDone->setVisible(false); diff --git a/OptionsDialog.cpp b/OptionsDialog.cpp index df5d122..a967d56 100755 --- a/OptionsDialog.cpp +++ b/OptionsDialog.cpp @@ -42,10 +42,6 @@ OptionsDialog::OptionsDialog(ProfileDatabase *profileDB, QWidget *parent) : { // Set Window Flags setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); -#ifdef Q_OS_LINUX - // for stupid Window Manager (GNOME 3 should feel triggered) - setWindowFlags(windowFlags()^Qt::Dialog^Qt::Window); -#endif // Setup User Interface ui->setupUi(this); @@ -86,9 +82,11 @@ OptionsDialog::OptionsDialog(ProfileDatabase *profileDB, QWidget *parent) : setupInterfaceSettings(); setupSnapmaticPictureViewer(); +#ifndef Q_QS_ANDROID // DPI calculation qreal screenRatio = AppEnv::screenRatio(); resize(435 * screenRatio, 405 * screenRatio); +#endif #ifdef GTA5SYNC_DISABLED ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->tabSync)); diff --git a/PictureDialog.cpp b/PictureDialog.cpp index 5c4b87c..603fa42 100755 --- a/PictureDialog.cpp +++ b/PictureDialog.cpp @@ -22,6 +22,7 @@ #include "ui_PictureDialog.h" #include "SidebarGenerator.h" #include "MapLocationDialog.h" +#include "ImageEditorDialog.h" #include "JsonEditorDialog.h" #include "SnapmaticEditor.h" #include "StandardPaths.h" @@ -84,6 +85,14 @@ PictureDialog::PictureDialog(ProfileDatabase *profileDB, CrewDatabase *crewDB, Q setupPictureDialog(); } +PictureDialog::PictureDialog(ProfileDatabase *profileDB, CrewDatabase *crewDB, QString profileName, QWidget *parent) : + QDialog(parent), profileDB(profileDB), crewDB(crewDB), profileName(profileName), + ui(new Ui::PictureDialog) +{ + primaryWindow = false; + setupPictureDialog(); +} + PictureDialog::PictureDialog(bool primaryWindow, ProfileDatabase *profileDB, CrewDatabase *crewDB, QWidget *parent) : QDialog(parent), primaryWindow(primaryWindow), profileDB(profileDB), crewDB(crewDB), ui(new Ui::PictureDialog) @@ -91,6 +100,13 @@ PictureDialog::PictureDialog(bool primaryWindow, ProfileDatabase *profileDB, Cre setupPictureDialog(); } +PictureDialog::PictureDialog(bool primaryWindow, ProfileDatabase *profileDB, CrewDatabase *crewDB, QString profileName, QWidget *parent) : + QDialog(parent), primaryWindow(primaryWindow), profileDB(profileDB), crewDB(crewDB), profileName(profileName), + ui(new Ui::PictureDialog) +{ + setupPictureDialog(); +} + void PictureDialog::setupPictureDialog() { // Set Window Flags @@ -137,6 +153,7 @@ void PictureDialog::setupPictureDialog() manageMenu->addAction(tr("Export as &Snapmatic..."), this, SLOT(copySnapmaticPicture())); manageMenu->addSeparator(); manageMenu->addAction(tr("&Edit Properties..."), this, SLOT(editSnapmaticProperties())); + manageMenu->addAction(tr("&Overwrite Image..."), this, SLOT(editSnapmaticImage())); manageMenu->addSeparator(); QAction *openViewerAction = manageMenu->addAction(tr("Open &Map Viewer..."), this, SLOT(openPreviewMap())); openViewerAction->setShortcut(Qt::Key_M); @@ -583,7 +600,7 @@ void PictureDialog::renderOverlayPicture() void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture, bool readOk, bool _indexed, int _index) { - if (smpic != nullptr) smpic->disconnect(this, SLOT(updated())); + if (smpic != nullptr) smpic->disconnect(); snapmaticPicture = QImage(); indexed = _indexed; index = _index; @@ -620,6 +637,7 @@ void PictureDialog::setSnapmaticPicture(SnapmaticPicture *picture, bool readOk, QMessageBox::warning(this,tr("Snapmatic Picture Viewer"),tr("Failed at %1").arg(picture->getLastStep())); } QObject::connect(smpic, SIGNAL(updated()), this, SLOT(updated())); + QObject::connect(smpic, SIGNAL(customSignal(QString)), this, SLOT(customSignal(QString))); emit newPictureCommited(snapmaticPicture); } @@ -808,6 +826,11 @@ void PictureDialog::on_labPicture_mouseDoubleClicked(Qt::MouseButton button) pictureWidget->move(desktopRect.x(), desktopRect.y()); pictureWidget->resize(desktopRect.width(), desktopRect.height()); +#ifdef GTA5SYNC_WIN +#if QT_VERSION >= 0x050200 + QtWin::markFullscreenWindow(pictureWidget, true); +#endif +#endif pictureWidget->showFullScreen(); pictureWidget->setFocus(); pictureWidget->raise(); @@ -847,7 +870,11 @@ void PictureDialog::openPreviewMap() } mapLocDialog->setWindowIcon(windowIcon()); mapLocDialog->setModal(true); +#ifndef Q_OS_ANDROID mapLocDialog->show(); +#else + mapLocDialog->showMaximized(); +#endif mapLocDialog->exec(); if (mapLocDialog->propUpdated()) { @@ -895,11 +922,38 @@ void PictureDialog::editSnapmaticProperties() snapmaticEditor->setWindowIcon(windowIcon()); snapmaticEditor->setSnapmaticPicture(picture); snapmaticEditor->setModal(true); +#ifndef Q_OS_ANDROID snapmaticEditor->show(); +#else + snapmaticEditor->showMaximized(); +#endif snapmaticEditor->exec(); delete snapmaticEditor; } +void PictureDialog::editSnapmaticImage() +{ + SnapmaticPicture *picture = smpic; + ImageEditorDialog *imageEditor; + if (rqFullscreen && fullscreenWidget != nullptr) + { + imageEditor = new ImageEditorDialog(picture, profileName, fullscreenWidget); + } + else + { + imageEditor = new ImageEditorDialog(picture, profileName, this); + } + imageEditor->setWindowIcon(windowIcon()); + imageEditor->setModal(true); +#ifndef Q_OS_ANDROID + imageEditor->show(); +#else + snapmaticEditor->showMaximized(); +#endif + imageEditor->exec(); + delete imageEditor; +} + void PictureDialog::editSnapmaticRawJson() { SnapmaticPicture *picture = smpic; @@ -914,7 +968,11 @@ void PictureDialog::editSnapmaticRawJson() } jsonEditor->setWindowIcon(windowIcon()); jsonEditor->setModal(true); +#ifndef Q_OS_ANDROID jsonEditor->show(); +#else + jsonEditor->showMaximized(); +#endif jsonEditor->exec(); delete jsonEditor; } @@ -933,3 +991,13 @@ void PictureDialog::updated() } ui->labJSON->setText(jsonDrawString.arg(locX, locY, locZ, generatePlayersString(), generateCrewString(), picTitl, picAreaStr, created)); } + +void PictureDialog::customSignal(QString signal) +{ + SnapmaticPicture *picture = smpic; // used by macro + if (signal == "PictureUpdated") + { + snapmaticPicture = picture->getImage(); + renderPicture(); + } +} diff --git a/PictureDialog.h b/PictureDialog.h index 66d2c51..0c3155c 100755 --- a/PictureDialog.h +++ b/PictureDialog.h @@ -46,7 +46,9 @@ class PictureDialog : public QDialog Q_OBJECT public: explicit PictureDialog(ProfileDatabase *profileDB, CrewDatabase *crewDB, QWidget *parent = 0); + explicit PictureDialog(ProfileDatabase *profileDB, CrewDatabase *crewDB, QString profileName, QWidget *parent = 0); explicit PictureDialog(bool primaryWindow, ProfileDatabase *profileDB, CrewDatabase *crewDB, QWidget *parent = 0); + explicit PictureDialog(bool primaryWindow, ProfileDatabase *profileDB, CrewDatabase *crewDB, QString profileName, QWidget *parent = 0); void setupPictureDialog(); void setSnapmaticPicture(SnapmaticPicture *picture, bool readOk, bool indexed, int index); void setSnapmaticPicture(SnapmaticPicture *picture, bool readOk, int index); @@ -78,10 +80,12 @@ private slots: void previousPictureRequestedSlot(); void editSnapmaticProperties(); void editSnapmaticRawJson(); + void editSnapmaticImage(); void renderOverlayPicture(); void renderPicture(); void openPreviewMap(); void updated(); + void customSignal(QString signal); signals: void nextPictureRequested(); @@ -110,6 +114,7 @@ private: bool primaryWindow; ProfileDatabase *profileDB; CrewDatabase *crewDB; + QString profileName; Ui::PictureDialog *ui; QMap globalMap; SnapmaticPicture *smpic; diff --git a/PlayerListDialog.cpp b/PlayerListDialog.cpp index 748c5e9..019871c 100644 --- a/PlayerListDialog.cpp +++ b/PlayerListDialog.cpp @@ -32,10 +32,8 @@ PlayerListDialog::PlayerListDialog(QStringList players, ProfileDatabase *profile { // Set Window Flags setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); -#ifdef Q_OS_LINUX - // for stupid Window Manager (GNOME 3 should feel triggered) - setWindowFlags(windowFlags()^Qt::Dialog^Qt::Window); -#endif + + listUpdated = false; ui->setupUi(this); ui->cmdCancel->setDefault(true); @@ -237,5 +235,16 @@ void PlayerListDialog::on_cmdApply_clicked() players += ui->listSePlayers->item(i)->text().split(" ").at(0); } emit playerListUpdated(players); + listUpdated = true; close(); } + +QStringList PlayerListDialog::getPlayerList() const +{ + return players; +} + +bool PlayerListDialog::isListUpdated() +{ + return listUpdated; +} diff --git a/PlayerListDialog.h b/PlayerListDialog.h index 31f91ed..fb779d7 100644 --- a/PlayerListDialog.h +++ b/PlayerListDialog.h @@ -32,6 +32,8 @@ class PlayerListDialog : public QDialog public: explicit PlayerListDialog(QStringList players, ProfileDatabase *profileDB, QWidget *parent = 0); + QStringList getPlayerList() const; + bool isListUpdated(); ~PlayerListDialog(); private slots: @@ -45,6 +47,7 @@ private: QStringList players; ProfileDatabase *profileDB; Ui::PlayerListDialog *ui; + bool listUpdated; void drawSwitchButtons(); void buildInterface(); diff --git a/ProfileInterface.cpp b/ProfileInterface.cpp index 5578ed8..9a7a258 100755 --- a/ProfileInterface.cpp +++ b/ProfileInterface.cpp @@ -18,6 +18,7 @@ #include "ProfileInterface.h" #include "ui_ProfileInterface.h" +#include "PlayerListDialog.h" #include "SidebarGenerator.h" #include "SnapmaticWidget.h" #include "DatabaseThread.h" @@ -187,7 +188,7 @@ void ProfileInterface::pictureFixed_event(SnapmaticPicture *picture) void ProfileInterface::pictureLoaded(SnapmaticPicture *picture, bool inserted) { - SnapmaticWidget *picWidget = new SnapmaticWidget(profileDB, crewDB, threadDB, this); + SnapmaticWidget *picWidget = new SnapmaticWidget(profileDB, crewDB, threadDB, profileName, this); picWidget->setSnapmaticPicture(picture); picWidget->setContentMode(contentMode); picWidget->setMouseTracking(true); @@ -502,15 +503,15 @@ fileDialogPreOpen: //Work? void ProfileInterface::importFilesProgress(QStringList selectedFiles) { int maximumId = selectedFiles.length(); - int overallId = 1; + int overallId = 0; QString errorStr; - QStringList failedFiles; + QStringList failed; // Progress dialog QProgressDialog pbDialog(this); pbDialog.setWindowFlags(pbDialog.windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowCloseButtonHint); pbDialog.setWindowTitle(tr("Import...")); - pbDialog.setLabelText(tr("Import file %1 of %2 files").arg(QString::number(overallId), QString::number(maximumId))); + pbDialog.setLabelText(tr("Import file %1 of %2 files").arg(QString::number(1), QString::number(maximumId))); pbDialog.setRange(1, maximumId); pbDialog.setValue(1); pbDialog.setModal(true); @@ -518,6 +519,7 @@ void ProfileInterface::importFilesProgress(QStringList selectedFiles) pbBtn.at(0)->setDisabled(true); QList pbBar = pbDialog.findChildren(); pbBar.at(0)->setTextVisible(false); + pbDialog.setAutoClose(false); pbDialog.show(); // THREADING HERE PLEASE @@ -525,18 +527,18 @@ void ProfileInterface::importFilesProgress(QStringList selectedFiles) int currentTime = importDateTime.time().toString(importTimeFormat).toInt(); for (QString selectedFile : selectedFiles) { + overallId++; pbDialog.setValue(overallId); pbDialog.setLabelText(tr("Import file %1 of %2 files").arg(QString::number(overallId), QString::number(maximumId))); importDateTime = QDateTime::currentDateTime(); if (!importFile(selectedFile, importDateTime, ¤tTime, false)) { - failedFiles << QFileInfo(selectedFile).fileName(); + failed << QFileInfo(selectedFile).fileName(); } - overallId++; } pbDialog.close(); - for (QString curErrorStr : failedFiles) + for (QString curErrorStr : failed) { errorStr += ", " % curErrorStr; } @@ -685,6 +687,7 @@ bool ProfileInterface::importFile(QString selectedFile, QDateTime importDateTime QFile snapmaticFile(selectedFile); if (!snapmaticFile.open(QFile::ReadOnly)) { + QMessageBox::warning(this, tr("Import"), tr("Can't import %1 because file can't be open").arg("\""+selectedFileName+"\"")); delete picture; return false; } @@ -695,6 +698,7 @@ bool ProfileInterface::importFile(QString selectedFile, QDateTime importDateTime if (!snapmaticImageReader.read(importImage)) { QMessageBox::warning(this, tr("Import"), tr("Can't import %1 because file can't be parsed properly").arg("\""+selectedFileName+"\"")); + delete importImage; delete picture; return false; } @@ -913,7 +917,7 @@ void ProfileInterface::exportSelected() settings.beginGroup("FileDialogs"); //bool dontUseNativeDialog = settings.value("DontUseNativeDialog", false).toBool(); settings.beginGroup("ExportDirectory"); - QString exportDirectory = QFileDialog::getExistingDirectory(this, tr("Export selected"), settings.value(profileName, profileFolder).toString()); + QString exportDirectory = QFileDialog::getExistingDirectory(this, tr("Export selected..."), settings.value(profileName, profileFolder).toString()); if (exportDirectory != "") { settings.setValue(profileName, exportDirectory); @@ -951,7 +955,7 @@ void ProfileInterface::exportSelected() #endif bool itemSelected = false; - QString selectedItem = inputDialog.getItem(this, tr("Export selected"), tr("%1Export Snapmatic pictures%2

JPG pictures make it possible to open the picture with a Image Viewer
GTA Snapmatic make it possible to import the picture into the game

Export as:").arg(ExportPreSpan, ExportPostSpan), inputDialogItems, 0, false, &itemSelected, inputDialog.windowFlags()^Qt::WindowContextHelpButtonHint); + QString selectedItem = inputDialog.getItem(this, tr("Export selected..."), tr("%1Export Snapmatic pictures%2

JPG pictures make it possible to open the picture with a Image Viewer
GTA Snapmatic make it possible to import the picture into the game

Export as:").arg(ExportPreSpan, ExportPostSpan), inputDialogItems, 0, false, &itemSelected, inputDialog.windowFlags()^Qt::WindowContextHelpButtonHint); if (itemSelected) { if (selectedItem == tr("JPG pictures and GTA Snapmatic")) @@ -1012,6 +1016,7 @@ void ProfileInterface::exportSelected() QObject::connect(exportThread, SIGNAL(exportFinished()), &pbDialog, SLOT(close())); exportThread->start(); + pbDialog.setAutoClose(false); pbDialog.exec(); QStringList getFailedSavegames = exportThread->getFailedSavegames(); QStringList getFailedCopyPictures = exportThread->getFailedCopyPictures(); @@ -1208,6 +1213,7 @@ 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.addAction(PictureDialog::tr("&Overwrite Image..."), picWidget, SLOT(editSnapmaticImage())); editMenu.addSeparator(); editMenu.addAction(PictureDialog::tr("Open &Map Viewer..."), picWidget, SLOT(openMapViewer())); editMenu.addAction(PictureDialog::tr("Open &JSON Editor..."), picWidget, SLOT(editSnapmaticRawJson())); @@ -1490,3 +1496,406 @@ bool ProfileInterface::isSupportedImageFile(QString selectedFileName) } return false; } + +void ProfileInterface::massTool(MassTool tool) +{ + switch(tool) + { + case MassTool::Qualify: + { + QList snapmaticWidgets; + for (ProfileWidget *widget : widgets.keys()) + { + if (widget->isSelected()) + { + if (widget->getWidgetType() == "SnapmaticWidget") + { + SnapmaticWidget *snapmaticWidget = qobject_cast(widget); + snapmaticWidgets += snapmaticWidget; + } + } + } + + if (snapmaticWidgets.isEmpty()) + { + QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("You don't have any Snapmatics selected!")); + return; + } + + // Prepare Progress + + int maximumId = snapmaticWidgets.length(); + int overallId = 0; + + QProgressDialog pbDialog(this); + pbDialog.setWindowFlags(pbDialog.windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowCloseButtonHint); + pbDialog.setWindowTitle(tr("Patch selected...")); + pbDialog.setLabelText(tr("Patch file %1 of %2 files").arg(QString::number(1), QString::number(maximumId))); + pbDialog.setRange(1, maximumId); + pbDialog.setValue(1); + pbDialog.setModal(true); + QList pbBtn = pbDialog.findChildren(); + pbBtn.at(0)->setDisabled(true); + QList pbBar = pbDialog.findChildren(); + pbBar.at(0)->setTextVisible(false); + pbDialog.setAutoClose(false); + pbDialog.show(); + + // Begin Progress + + QStringList fails; + for (SnapmaticWidget *snapmaticWidget : snapmaticWidgets) + { + // Update Progress + overallId++; + pbDialog.setValue(overallId); + pbDialog.setLabelText(tr("Patch file %1 of %2 files").arg(QString::number(overallId), QString::number(maximumId))); + + SnapmaticPicture *picture = snapmaticWidget->getPicture(); + + SnapmaticProperties snapmaticProperties = picture->getSnapmaticProperties(); + snapmaticProperties.isSelfie = true; + snapmaticProperties.isMug = false; + snapmaticProperties.isFromRSEditor = false; + snapmaticProperties.isFromDirector = false; + snapmaticProperties.isMeme = false; + + 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(snapmaticProperties); + if (!picture->exportPicture(currentFilePath)) + { + picture->setSnapmaticProperties(fallbackProperties); + fails << QString("%1 [%2]").arg(picture->getPictureTitle(), picture->getPictureString()); + } + else + { + picture->emitUpdate(); + qApp->processEvents(); + } + } + pbDialog.close(); + if (!fails.isEmpty()) + { + QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("%1 failed with...\n\n%2", "Action failed with...").arg(tr("Qualify", "%1 failed with..."), fails.join(", "))); + } + } + break; + case MassTool::Players: + { + QList snapmaticWidgets; + for (ProfileWidget *widget : widgets.keys()) + { + if (widget->isSelected()) + { + if (widget->getWidgetType() == "SnapmaticWidget") + { + SnapmaticWidget *snapmaticWidget = qobject_cast(widget); + snapmaticWidgets += snapmaticWidget; + } + } + } + + if (snapmaticWidgets.isEmpty()) + { + QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("You don't have any Snapmatics selected!")); + return; + } + + PlayerListDialog *playerListDialog = new PlayerListDialog(QStringList(), profileDB, this); + playerListDialog->setModal(true); + playerListDialog->show(); + playerListDialog->exec(); + if (!playerListDialog->isListUpdated()) + { + return; + } + QStringList players = playerListDialog->getPlayerList(); + delete playerListDialog; + + // Prepare Progress + + int maximumId = snapmaticWidgets.length(); + int overallId = 0; + + QProgressDialog pbDialog(this); + pbDialog.setWindowFlags(pbDialog.windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowCloseButtonHint); + pbDialog.setWindowTitle(tr("Patch selected...")); + pbDialog.setLabelText(tr("Patch file %1 of %2 files").arg(QString::number(1), QString::number(maximumId))); + pbDialog.setRange(1, maximumId); + pbDialog.setValue(1); + pbDialog.setModal(true); + QList pbBtn = pbDialog.findChildren(); + pbBtn.at(0)->setDisabled(true); + QList pbBar = pbDialog.findChildren(); + pbBar.at(0)->setTextVisible(false); + pbDialog.setAutoClose(false); + pbDialog.show(); + + // Begin Progress + + QStringList fails; + for (SnapmaticWidget *snapmaticWidget : snapmaticWidgets) + { + // Update Progress + overallId++; + pbDialog.setValue(overallId); + pbDialog.setLabelText(tr("Patch file %1 of %2 files").arg(QString::number(overallId), QString::number(maximumId))); + + SnapmaticPicture *picture = snapmaticWidget->getPicture(); + + SnapmaticProperties snapmaticProperties = picture->getSnapmaticProperties(); + snapmaticProperties.playersList = players; + + 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(snapmaticProperties); + if (!picture->exportPicture(currentFilePath)) + { + picture->setSnapmaticProperties(fallbackProperties); + fails << QString("%1 [%2]").arg(picture->getPictureTitle(), picture->getPictureString()); + } + else + { + picture->emitUpdate(); + qApp->processEvents(); + } + } + pbDialog.close(); + if (!fails.isEmpty()) + { + QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("%1 failed with...\n\n%2", "Action failed with...").arg(tr("Change Players", "%1 failed with..."), fails.join(", "))); + } + } + break; + case MassTool::Crew: + { + QList snapmaticWidgets; + for (ProfileWidget *widget : widgets.keys()) + { + if (widget->isSelected()) + { + if (widget->getWidgetType() == "SnapmaticWidget") + { + SnapmaticWidget *snapmaticWidget = qobject_cast(widget); + snapmaticWidgets += snapmaticWidget; + } + } + } + + if (snapmaticWidgets.isEmpty()) + { + QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("You don't have any Snapmatics selected!")); + return; + } + + int crewID = 0; + { +preSelectionCrewID: + bool ok; + QStringList itemList; + QStringList crewList = crewDB->getCrews(); + if (!crewList.contains(QLatin1String("0"))) + { + crewList += QLatin1String("0"); + } + crewList.sort(); + for (QString crew : crewList) + { + itemList += QString("%1 (%2)").arg(crew, crewDB->getCrewName(crew.toInt())); + } + QString newCrew = QInputDialog::getItem(this, QApplication::translate("SnapmaticEditor", "Snapmatic Crew"), QApplication::translate("SnapmaticEditor", "New Snapmatic crew:"), itemList, 0, true, &ok, windowFlags()^Qt::Dialog^Qt::WindowMinMaxButtonsHint); + if (ok && !newCrew.isEmpty()) + { + if (newCrew.contains(" ")) newCrew = newCrew.split(" ").at(0); + if (newCrew.length() > 10) return; + for (QChar crewChar : newCrew) + { + if (!crewChar.isNumber()) + { + QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("Failed to enter a valid Snapmatic Crew ID")); + goto preSelectionCrewID; + } + } + crewID = newCrew.toInt(); + } + else + { + return; + } + } + + // Prepare Progress + + int maximumId = snapmaticWidgets.length(); + int overallId = 0; + + QProgressDialog pbDialog(this); + pbDialog.setWindowFlags(pbDialog.windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowCloseButtonHint); + pbDialog.setWindowTitle(tr("Patch selected...")); + pbDialog.setLabelText(tr("Patch file %1 of %2 files").arg(QString::number(1), QString::number(maximumId))); + pbDialog.setRange(1, maximumId); + pbDialog.setValue(1); + pbDialog.setModal(true); + QList pbBtn = pbDialog.findChildren(); + pbBtn.at(0)->setDisabled(true); + QList pbBar = pbDialog.findChildren(); + pbBar.at(0)->setTextVisible(false); + pbDialog.setAutoClose(false); + pbDialog.show(); + + // Begin Progress + + QStringList fails; + for (SnapmaticWidget *snapmaticWidget : snapmaticWidgets) + { + // Update Progress + overallId++; + pbDialog.setValue(overallId); + pbDialog.setLabelText(tr("Patch file %1 of %2 files").arg(QString::number(overallId), QString::number(maximumId))); + + SnapmaticPicture *picture = snapmaticWidget->getPicture(); + + SnapmaticProperties snapmaticProperties = picture->getSnapmaticProperties(); + snapmaticProperties.crewID = crewID; + + 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(snapmaticProperties); + if (!picture->exportPicture(currentFilePath)) + { + picture->setSnapmaticProperties(fallbackProperties); + fails << QString("%1 [%2]").arg(picture->getPictureTitle(), picture->getPictureString()); + } + else + { + picture->emitUpdate(); + qApp->processEvents(); + } + } + pbDialog.close(); + if (!fails.isEmpty()) + { + QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("%1 failed with...\n\n%2", "Action failed with...").arg(tr("Change Crew", "%1 failed with..."), fails.join(", "))); + } + } + break; + case MassTool::Title: + { + QList snapmaticWidgets; + for (ProfileWidget *widget : widgets.keys()) + { + if (widget->isSelected()) + { + if (widget->getWidgetType() == "SnapmaticWidget") + { + SnapmaticWidget *snapmaticWidget = qobject_cast(widget); + snapmaticWidgets += snapmaticWidget; + } + } + } + + if (snapmaticWidgets.isEmpty()) + { + QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("You don't have any Snapmatics selected!")); + return; + } + + QString snapmaticTitle; + { +preSelectionTitle: + bool ok; + QString newTitle = QInputDialog::getText(this, QApplication::translate("SnapmaticEditor", "Snapmatic Title"), QApplication::translate("SnapmaticEditor", "New Snapmatic title:"), QLineEdit::Normal, snapmaticTitle, &ok, windowFlags()^Qt::Dialog^Qt::WindowMinMaxButtonsHint); + if (ok && !newTitle.isEmpty()) + { + if (!SnapmaticPicture::verifyTitle(newTitle)) + { + QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("Failed to enter a valid Snapmatic title")); + goto preSelectionTitle; + } + snapmaticTitle = newTitle; + } + else + { + return; + } + } + + // Prepare Progress + + int maximumId = snapmaticWidgets.length(); + int overallId = 0; + + QProgressDialog pbDialog(this); + pbDialog.setWindowFlags(pbDialog.windowFlags()^Qt::WindowContextHelpButtonHint^Qt::WindowCloseButtonHint); + pbDialog.setWindowTitle(tr("Patch selected...")); + pbDialog.setLabelText(tr("Patch file %1 of %2 files").arg(QString::number(overallId), QString::number(maximumId))); + pbDialog.setRange(1, maximumId); + pbDialog.setValue(1); + pbDialog.setModal(true); + QList pbBtn = pbDialog.findChildren(); + pbBtn.at(0)->setDisabled(true); + QList pbBar = pbDialog.findChildren(); + pbBar.at(0)->setTextVisible(false); + pbDialog.setAutoClose(false); + pbDialog.show(); + + // Begin Progress + + QStringList fails; + for (SnapmaticWidget *snapmaticWidget : snapmaticWidgets) + { + // Update Progress + overallId++; + pbDialog.setValue(overallId); + pbDialog.setLabelText(tr("Patch file %1 of %2 files").arg(QString::number(overallId), QString::number(maximumId))); + + SnapmaticPicture *picture = snapmaticWidget->getPicture(); + + QString currentFilePath = picture->getPictureFilePath(); + QString originalFilePath = picture->getOriginalPictureFilePath(); + QString backupFileName = originalFilePath % ".bak"; + if (!QFile::exists(backupFileName)) + { + QFile::copy(currentFilePath, backupFileName); + } + QString fallbackTitle = picture->getPictureTitle(); + picture->setPictureTitle(snapmaticTitle); + if (!picture->exportPicture(currentFilePath)) + { + picture->setPictureTitle(fallbackTitle); + fails << QString("%1 [%2]").arg(picture->getPictureTitle(), picture->getPictureString()); + } + else + { + picture->emitUpdate(); + qApp->processEvents(); + } + } + pbDialog.close(); + if (!fails.isEmpty()) + { + QMessageBox::warning(this, tr("Snapmatic Mass Tool"), tr("%1 failed with...\n\n%2", "Action failed with...").arg(tr("Change Title", "%1 failed with..."), fails.join(", "))); + } + } + break; + } +} diff --git a/ProfileInterface.h b/ProfileInterface.h index ad0f666..cba5d88 100755 --- a/ProfileInterface.h +++ b/ProfileInterface.h @@ -40,6 +40,8 @@ namespace Ui { class ProfileInterface; } +enum class MassTool : int { Qualify = 0, Players = 1, Crew = 2, Title = 3 }; + class ProfileInterface : public QWidget { Q_OBJECT @@ -48,6 +50,7 @@ public: void setProfileFolder(QString folder, QString profile); void settingsApplied(int contentMode, bool languageChanged); void setupProfileInterface(); + void massTool(MassTool tool); void disableSelected(); void enableSelected(); int selectedWidgets(); diff --git a/SavegameDialog.cpp b/SavegameDialog.cpp index d99c089..016c231 100755 --- a/SavegameDialog.cpp +++ b/SavegameDialog.cpp @@ -3,6 +3,7 @@ #include "SavegameCopy.h" #include "AppEnv.h" #include +#include SavegameDialog::SavegameDialog(QWidget *parent) : QDialog(parent), @@ -10,10 +11,6 @@ SavegameDialog::SavegameDialog(QWidget *parent) : { // Set Window Flags setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); -#ifdef Q_OS_LINUX - // for stupid Window Manager (GNOME 3 should feel triggered) - setWindowFlags(windowFlags()^Qt::Dialog^Qt::Window); -#endif // Setup User Interface ui->setupUi(this); @@ -24,9 +21,7 @@ SavegameDialog::SavegameDialog(QWidget *parent) : ui->cmdClose->setIcon(QIcon::fromTheme("dialog-close")); } - // DPI calculation - qreal screenRatio = AppEnv::screenRatio(); - resize(400 * screenRatio, 105 * screenRatio); + refreshWindowSize(); } SavegameDialog::~SavegameDialog() @@ -34,6 +29,19 @@ SavegameDialog::~SavegameDialog() delete ui; } +void SavegameDialog::refreshWindowSize() +{ + // DPI calculation + qreal screenRatio = AppEnv::screenRatio(); + int dpiWindowWidth = 400 * screenRatio; + int dpiWindowHeight = 105 * screenRatio; + if (dpiWindowHeight < heightForWidth(dpiWindowWidth)) + { + dpiWindowHeight = heightForWidth(dpiWindowWidth); + } + resize(dpiWindowWidth, dpiWindowHeight); +} + void SavegameDialog::setSavegameData(SavegameData *savegame, QString savegamePath, bool readOk) { // Showing error if reading error @@ -44,6 +52,7 @@ void SavegameDialog::setSavegameData(SavegameData *savegame, QString savegamePat } sgdPath = savegamePath; ui->labSavegameText->setText(savegameLabStr.arg(savegame->getSavegameStr())); + refreshWindowSize(); } void SavegameDialog::on_cmdClose_clicked() diff --git a/SavegameDialog.h b/SavegameDialog.h index 9fe8f35..aaabf4f 100755 --- a/SavegameDialog.h +++ b/SavegameDialog.h @@ -19,6 +19,7 @@ public: private slots: void on_cmdClose_clicked(); void on_cmdCopy_clicked(); + void refreshWindowSize(); private: Ui::SavegameDialog *ui; diff --git a/SnapmaticEditor.cpp b/SnapmaticEditor.cpp index 17830f2..fe1390e 100644 --- a/SnapmaticEditor.cpp +++ b/SnapmaticEditor.cpp @@ -36,10 +36,6 @@ SnapmaticEditor::SnapmaticEditor(CrewDatabase *crewDB, ProfileDatabase *profileD { // Set Window Flags setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint); -#ifdef Q_OS_LINUX - // for stupid Window Manager (GNOME 3 should feel triggered) - setWindowFlags(windowFlags()^Qt::Dialog^Qt::Window); -#endif ui->setupUi(this); ui->cmdCancel->setDefault(true); @@ -64,9 +60,11 @@ SnapmaticEditor::SnapmaticEditor(CrewDatabase *crewDB, ProfileDatabase *profileD snapmaticTitle = QString(); smpic = 0; +#ifndef Q_OS_ANDROID // DPI calculation qreal screenRatio = AppEnv::screenRatio(); resize(400 * screenRatio, 360 * screenRatio); +#endif } SnapmaticEditor::~SnapmaticEditor() @@ -225,9 +223,11 @@ void SnapmaticEditor::setSnapmaticPlayers(const QStringList &players) { ui->labPlayers->setText(playersStr.arg(QApplication::translate("PictureDialog", "No Players"), editStr)); } +#ifndef Q_OS_ANDROID ui->gbValues->resize(ui->gbValues->sizeHint()); ui->frameWidget->resize(ui->frameWidget->sizeHint()); resize(width(), heightForWidth(width())); +#endif } void SnapmaticEditor::setSnapmaticTitle(const QString &title) @@ -251,9 +251,11 @@ void SnapmaticEditor::setSnapmaticTitle(const QString &title) { ui->labAppropriate->setText(tr("Appropriate: %1").arg(QString("%1").arg(tr("No", "No, could lead to issues")))); } +#ifndef Q_OS_ANDROID ui->gbValues->resize(ui->gbValues->sizeHint()); ui->frameWidget->resize(ui->frameWidget->sizeHint()); resize(width(), heightForWidth(width())); +#endif } void SnapmaticEditor::setSnapmaticCrew(const QString &crew) @@ -261,9 +263,11 @@ void SnapmaticEditor::setSnapmaticCrew(const QString &crew) QString editStr = QString("%1").arg(tr("Edit")); QString crewStr = tr("Crew: %1 (%2)").arg(StringParser::escapeString(crew), editStr); ui->labCrew->setText(crewStr); +#ifndef Q_OS_ANDROID ui->gbValues->resize(ui->gbValues->sizeHint()); ui->frameWidget->resize(ui->frameWidget->sizeHint()); resize(width(), heightForWidth(width())); +#endif } QString SnapmaticEditor::returnCrewName(int crewID_) @@ -355,6 +359,7 @@ void SnapmaticEditor::on_labPlayers_linkActivated(const QString &link) { PlayerListDialog *playerListDialog = new PlayerListDialog(playersList, profileDB, this); connect(playerListDialog, SIGNAL(playerListUpdated(QStringList)), this, SLOT(playerListUpdated(QStringList))); + playerListDialog->setModal(true); playerListDialog->show(); playerListDialog->exec(); delete playerListDialog; diff --git a/SnapmaticPicture.cpp b/SnapmaticPicture.cpp index 48822da..d5414f7 100755 --- a/SnapmaticPicture.cpp +++ b/SnapmaticPicture.cpp @@ -810,6 +810,9 @@ QImage SnapmaticPicture::getImage(bool fastLoad) picStream->close(); delete picStream; + rawPicContent.clear(); + rawPicContent.squeeze(); + if (returnOk) { if (!fastLoadU) @@ -835,6 +838,22 @@ QImage SnapmaticPicture::getImage(bool fastLoad) return QImage(); } +QByteArray SnapmaticPicture::getPictureStream() // Incomplete because it just work in writeEnabled mode +{ + QByteArray jpegRawContent; + if (writeEnabled) + { + QBuffer *picStream = new QBuffer(&rawPicContent); + picStream->open(QIODevice::ReadWrite); + if (picStream->seek(jpegStreamEditorBegin)) + { + jpegRawContent = picStream->read(jpegPicStreamLength); + } + delete picStream; + } + return jpegRawContent; +} + int SnapmaticPicture::getContentMaxLength() { return jpegRawContentSize; @@ -856,6 +875,11 @@ void SnapmaticPicture::emitUpdate() emit updated(); } +void SnapmaticPicture::emitCustomSignal(const QString &signal) +{ + emit customSignal(signal); +} + // JSON part bool SnapmaticPicture::isJsonOk() @@ -1351,7 +1375,7 @@ bool SnapmaticPicture::isFormatSwitched() bool SnapmaticPicture::verifyTitle(const QString &title) { // VERIFY TITLE FOR BE A VALID SNAPMATIC TITLE - if (title.length() <= titlStreamCharacterMax) + if (title.length() <= titlStreamCharacterMax && title.length() > 0) { for (QChar titleChar : title) { diff --git a/SnapmaticPicture.h b/SnapmaticPicture.h index 71f15f8..71046df 100755 --- a/SnapmaticPicture.h +++ b/SnapmaticPicture.h @@ -62,6 +62,7 @@ public: bool isPicOk(); // Please use isPictureOk instead void clearCache(); QImage getImage(bool fastLoad = false); + QByteArray getPictureStream(); QString getLastStep(bool readable = true); QString getPictureStr(); QString getPictureHead(); @@ -79,6 +80,7 @@ public: bool setPictureStream(const QByteArray &streamArray); void updateStrings(); void emitUpdate(); + void emitCustomSignal(const QString &signal); // FILE MANAGEMENT bool exportPicture(const QString &fileName, SnapmaticFormat format = SnapmaticFormat::Auto_Format); @@ -170,6 +172,7 @@ private: static bool verifyTitleChar(const QChar &titleChar); signals: + void customSignal(QString signal); void preloaded(); void updated(); void loaded(); diff --git a/SnapmaticWidget.cpp b/SnapmaticWidget.cpp index 0707f32..d9fa875 100755 --- a/SnapmaticWidget.cpp +++ b/SnapmaticWidget.cpp @@ -18,6 +18,7 @@ #include "SnapmaticWidget.h" #include "ui_SnapmaticWidget.h" +#include "ImageEditorDialog.h" #include "MapLocationDialog.h" #include "JsonEditorDialog.h" #include "SnapmaticPicture.h" @@ -36,8 +37,8 @@ #include #include -SnapmaticWidget::SnapmaticWidget(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, QWidget *parent) : - ProfileWidget(parent), profileDB(profileDB), crewDB(crewDB), threadDB(threadDB), +SnapmaticWidget::SnapmaticWidget(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, QString profileName, QWidget *parent) : + ProfileWidget(parent), profileDB(profileDB), crewDB(crewDB), threadDB(threadDB), profileName(profileName), ui(new Ui::SnapmaticWidget) { ui->setupUi(this); @@ -67,6 +68,7 @@ void SnapmaticWidget::setSnapmaticPicture(SnapmaticPicture *picture) { smpic = picture; QObject::connect(picture, SIGNAL(updated()), this, SLOT(snapmaticUpdated())); + QObject::connect(picture, SIGNAL(customSignal(QString)), this, SLOT(customSignal(QString))); qreal screenRatio = AppEnv::screenRatio(); ui->labPicture->setFixedSize(48 * screenRatio, 27 * screenRatio); @@ -82,13 +84,22 @@ void SnapmaticWidget::setSnapmaticPicture(SnapmaticPicture *picture) void SnapmaticWidget::snapmaticUpdated() { - ui->labPicStr->setText(smpic->getPictureStr() % "\n" % smpic->getPictureTitl() % ""); + ui->labPicStr->setText(smpic->getPictureStr() % "\n" % smpic->getPictureTitl()); +} + +void SnapmaticWidget::customSignal(QString signal) +{ + if (signal == "PictureUpdated") + { + QPixmap SnapmaticPixmap = QPixmap::fromImage(smpic->getImage().scaled(ui->labPicture->width(), ui->labPicture->height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation), Qt::AutoColor); + ui->labPicture->setPixmap(SnapmaticPixmap); + } } void SnapmaticWidget::retranslate() { smpic->updateStrings(); - ui->labPicStr->setText(smpic->getPictureStr() % "\n" % smpic->getPictureTitl() % ""); + ui->labPicStr->setText(smpic->getPictureStr() % "\n" % smpic->getPictureTitl()); } void SnapmaticWidget::on_cmdView_clicked() @@ -98,7 +109,7 @@ void SnapmaticWidget::on_cmdView_clicked() bool navigationBar = settings.value("NavigationBar", false).toBool(); settings.endGroup(); - PictureDialog *picDialog = new PictureDialog(profileDB, crewDB, this); + PictureDialog *picDialog = new PictureDialog(profileDB, crewDB, profileName, this); picDialog->setSnapmaticPicture(smpic, true); picDialog->setModal(true); @@ -301,11 +312,19 @@ void SnapmaticWidget::editSnapmaticRawJson() delete jsonEditor; } +void SnapmaticWidget::editSnapmaticImage() +{ + ImageEditorDialog *imageEditor = new ImageEditorDialog(smpic, profileName, this); + imageEditor->setModal(true); + imageEditor->show(); + imageEditor->exec(); + delete imageEditor; +} + void SnapmaticWidget::openMapViewer() { SnapmaticPicture *picture = smpic; - MapLocationDialog *mapLocDialog; - mapLocDialog = new MapLocationDialog(picture->getSnapmaticProperties().location.x, picture->getSnapmaticProperties().location.y, this); + MapLocationDialog *mapLocDialog = new MapLocationDialog(picture->getSnapmaticProperties().location.x, picture->getSnapmaticProperties().location.y, this); mapLocDialog->setModal(true); mapLocDialog->show(); mapLocDialog->exec(); diff --git a/SnapmaticWidget.h b/SnapmaticWidget.h index bc5b087..289dbf6 100755 --- a/SnapmaticWidget.h +++ b/SnapmaticWidget.h @@ -38,7 +38,7 @@ class SnapmaticWidget : public ProfileWidget Q_OBJECT public: - SnapmaticWidget(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, QWidget *parent = 0); + SnapmaticWidget(ProfileDatabase *profileDB, CrewDatabase *crewDB, DatabaseThread *threadDB, QString profileName, QWidget *parent = 0); void setSnapmaticPicture(SnapmaticPicture *picture); void setSelectionMode(bool selectionMode); void setSelected(bool isSelected); @@ -69,8 +69,10 @@ private slots: void makePictureHiddenSlot(); void editSnapmaticProperties(); void editSnapmaticRawJson(); + void editSnapmaticImage(); void openMapViewer(); void snapmaticUpdated(); + void customSignal(QString signal); protected: void mouseDoubleClickEvent(QMouseEvent *ev); @@ -82,6 +84,7 @@ private: ProfileDatabase *profileDB; CrewDatabase *crewDB; DatabaseThread *threadDB; + QString profileName; Ui::SnapmaticWidget *ui; SnapmaticPicture *smpic; QColor highlightHiddenColor; diff --git a/UserInterface.cpp b/UserInterface.cpp index 67d4a97..6a607b6 100755 --- a/UserInterface.cpp +++ b/UserInterface.cpp @@ -82,7 +82,9 @@ UserInterface::UserInterface(ProfileDatabase *profileDB, CrewDatabase *crewDB, D // DPI calculation qreal screenRatio = AppEnv::screenRatio(); +#ifndef Q_QS_ANDROID resize(625 * screenRatio, 500 * screenRatio); +#endif ui->vlUserInterface->setSpacing(6 * screenRatio); ui->vlUserInterface->setContentsMargins(9 * screenRatio, 9 * screenRatio, 9 * screenRatio, 9 * screenRatio); } @@ -560,3 +562,23 @@ void UserInterface::retranslateUi() this->setWindowTitle(defaultWindowTitle.arg(tr("Select Profile"))); } } + +void UserInterface::on_actionQualify_as_Avatar_triggered() +{ + profileUI->massTool(MassTool::Qualify); +} + +void UserInterface::on_actionChange_Players_triggered() +{ + profileUI->massTool(MassTool::Players); +} + +void UserInterface::on_actionSet_Crew_triggered() +{ + profileUI->massTool(MassTool::Crew); +} + +void UserInterface::on_actionSet_Title_triggered() +{ + profileUI->massTool(MassTool::Title); +} diff --git a/UserInterface.h b/UserInterface.h index 38557b6..05ef444 100755 --- a/UserInterface.h +++ b/UserInterface.h @@ -62,6 +62,10 @@ private slots: void on_actionSelect_GTA_Folder_triggered(); void on_action_Enable_In_game_triggered(); void on_action_Disable_In_game_triggered(); + void on_actionQualify_as_Avatar_triggered(); + void on_actionChange_Players_triggered(); + void on_actionSet_Crew_triggered(); + void on_actionSet_Title_triggered(); void settingsApplied(int contentMode, bool languageChanged); protected: diff --git a/UserInterface.ui b/UserInterface.ui index 9e2ab52..151a728 100755 --- a/UserInterface.ui +++ b/UserInterface.ui @@ -207,10 +207,20 @@
+ + + Selection &mass tools + + + + + + + @@ -226,7 +236,7 @@ &About %1
- Ctrl+P + Ctrl+P @@ -237,7 +247,7 @@ Exit - Ctrl+Q + Ctrl+Q @@ -245,7 +255,7 @@ Close &Profile - Ctrl+End + Ctrl+End @@ -253,7 +263,7 @@ &Settings - Ctrl+S + Ctrl+S @@ -261,7 +271,7 @@ Select &All - Ctrl+A + Ctrl+A @@ -269,7 +279,7 @@ &Deselect All - Ctrl+D + Ctrl+D @@ -277,7 +287,7 @@ &Export selected... - Ctrl+E + Ctrl+E @@ -285,7 +295,7 @@ &Remove selected - Ctrl+Del + Ctrl+Del @@ -293,7 +303,7 @@ &Import files... - Ctrl+I + Ctrl+I @@ -301,7 +311,7 @@ &Open File... - Ctrl+O + Ctrl+O @@ -312,7 +322,7 @@ Select GTA V Folder... - Ctrl+G + Ctrl+G @@ -320,7 +330,7 @@ Show In-gam&e - Shift+E + Shift+E @@ -328,7 +338,39 @@ Hi&de In-game - Shift+D + Shift+D + + + + + Change &Title... + + + Shift+T + + + + + Change &Crew... + + + Shift+C + + + + + &Qualify as Avatar + + + Shift+Q + + + + + Change &Players... + + + Shift+P diff --git a/config.h b/config.h index 393c41f..af810ef 100755 --- a/config.h +++ b/config.h @@ -50,7 +50,7 @@ #ifndef GTA5SYNC_APPVER #ifndef GTA5SYNC_DAILYB -#define GTA5SYNC_APPVER "1.5.0-dev6" +#define GTA5SYNC_APPVER "1.5.0-dev7" #else #define GTA5SYNC_APPVER GTA5SYNC_DAILYB #endif diff --git a/gta5view.pro b/gta5view.pro index 35736a9..2bbd837 100755 --- a/gta5view.pro +++ b/gta5view.pro @@ -37,6 +37,7 @@ SOURCES += main.cpp \ ExportThread.cpp \ GlobalString.cpp \ IconLoader.cpp \ + ImageEditorDialog.cpp \ ImportDialog.cpp \ JsonEditorDialog.cpp \ MapLocationDialog.cpp \ @@ -74,6 +75,7 @@ HEADERS += \ ExportThread.h \ GlobalString.h \ IconLoader.h \ + ImageEditorDialog.h \ ImportDialog.h \ JsonEditorDialog.h \ MapLocationDialog.h \ @@ -105,6 +107,7 @@ HEADERS += \ FORMS += \ AboutDialog.ui \ ExportDialog.ui \ + ImageEditorDialog.ui \ ImportDialog.ui \ JsonEditorDialog.ui \ MapLocationDialog.ui \ diff --git a/main.cpp b/main.cpp index d8d6a3b..a6c0f5c 100755 --- a/main.cpp +++ b/main.cpp @@ -179,6 +179,9 @@ int main(int argc, char *argv[]) bool readOk = picture.readingPictureFromFile(arg1); picDialog.setWindowIcon(IconLoader::loadingAppIcon()); picDialog.setSnapmaticPicture(&picture, readOk); +#ifndef Q_OS_LINUX + picDialog.setWindowFlags(picDialog.windowFlags()^Qt::Dialog^Qt::Window); +#endif int crewID = picture.getSnapmaticProperties().crewID; if (crewID != 0) { crewDB.addCrew(crewID); } @@ -204,6 +207,7 @@ int main(int argc, char *argv[]) bool readOk = savegame.readingSavegameFromFile(arg1); savegameDialog.setWindowIcon(IconLoader::loadingAppIcon()); savegameDialog.setSavegameData(&savegame, arg1, readOk); + savegameDialog.setWindowFlags(savegameDialog.windowFlags()^Qt::Dialog^Qt::Window); if (!readOk) { return 1; } diff --git a/res/app.rc b/res/app.rc index dd5a131..03a9217 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-dev6\0" + VALUE "FileVersion", "1.5.0-dev7\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-dev6\0" + VALUE "ProductVersion", "1.5.0-dev7\0" END END END diff --git a/res/gta5sync_de.qm b/res/gta5sync_de.qm index 922f0e1..50b6529 100755 Binary files a/res/gta5sync_de.qm and b/res/gta5sync_de.qm differ diff --git a/res/gta5sync_de.ts b/res/gta5sync_de.ts index 8357dda..49d681b 100755 --- a/res/gta5sync_de.ts +++ b/res/gta5sync_de.ts @@ -147,13 +147,13 @@ Copyright &copy; <a href="%5">%6</a> %7<br/>%8 i <span style=" font-weight:600;">gta5sync</span><br/><br/>Ein Projekt zum ansehen und synchronisieren von Grand Theft Auto 5 Snapmatic Bilder und Spielständen<br/><br/>Projektversion: %1<br/>Gebaut mit Qt %2<br/>Läuft auf Qt %3<br/><br/>Copyright &copy; <a href="https://github.com/Syping/">Syping</a> 2016<br/>gta5sync is lizenziert unter <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> - + Using %1 %2 Using specific library, example Using libmyfuck Verwendet %1 %2 - + Translated by %1 Translated by translator, example Translated by Syping Übersetzt von %1 @@ -179,31 +179,31 @@ Copyright &copy; <a href="%5">%6</a> %7<br/>%8 i https://github.com/Syping/ - + NAME_OF_TRANSLATOR Enter your name there Syping - + TRANSLATOR_PROFILE Enter your proilfe there, example a GitHub profile, E-Mail with "mailto: afucker@sumfuck.com" or a webpage https://github.com/Syping/ - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Ein Projekt zum ansehen von Grand Theft Auto V<br/> Snapmatic Bilder und Spielständen - + Copyright &copy; <a href="%1">%2</a> %3 Copyright &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> %1 ist lizenziert unter <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> @@ -212,7 +212,7 @@ Snapmatic Bilder und Spielständen Copyright &copy; <a href="%1">%2</a> %3<br/>%4 ist lizenziert unter <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> - + A project for viewing and sync Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Ein Projekt zum ansehen und synchronisieren von<br/> @@ -341,17 +341,84 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen S&chließen + + ImageEditorDialog + + + + + Snapmatic Image Editor + Snapmatic Bild Editor + + + + Overwrite Image... + Bild überschreiben... + + + + + Capacity: %1 + Kapazität: %1 + + + + ? + ? + + + + &Import... + &Importieren... + + + + &Overwrite + &Überschreiben + + + &Import + &Importieren + + + &Save + &Speichern + + + &Replace + &Ersetzen + + + + &Close + S&chließen + + + + Patching of Snapmatic Image failed because of I/O Error + Patchen von Snapmatic Bild fehlgeschlagen wegen I/O Fehler + + + + Patching of Snapmatic Image failed because of Image Error + Patchen von Snapmatic Bild fehlgeschlagen wegen Bild Fehler + + + + Every taken Snapmatic have a different Capacity, a Snapmatic with higher Capacity can store a picture with better quality. + Jedes geschossene Snapmatic hat seine eigene Kapazität, ein Snapmatic mit besserer Kapazität kann ein Bild mit besserer Qualität beinhalten. + + ImportDialog - + Import... Importieren... - Settings - Einstellungen + Einstellungen &Keep Aspect Ratio @@ -370,12 +437,13 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen Seitenverhältnis behalten - + + Ignore Aspect Ratio Seitenverhältnis ignorieren - + Avatar Avatar @@ -384,34 +452,60 @@ Grand Theft Auto V Snapmatic Bilder und Spielständen Hintergrundfarbe: <span style="color:rgb(%1,%2,%3)">%4</span> - - - + + Picture + Bild + + + + Background + Hintergrund + + + + + Background Colour: <span style="color: %1">%1</span> Hintergrundfarbe: <span style="color: %1">%1</span> - + + ... ... - + + Background Image: %1 + Hintergrundbild: %1 + + + + X + X + + + + Force Colour in Avatar Zone + Erzwinge Farbe in Avatar Zone + + + Import picture Bild importieren - + &OK &OK - + Discard picture Bild verwerfen - + &Cancel Abbre&chen @@ -426,36 +520,67 @@ When you plan to use it as Avatar the picture will be cut! Wenn du planst es als Avatar zu verwenden das Bild wird abgetrennt! - - + None + Background Image: None + Hintergrundbild: Keins + Keins + + + + + + Background Image: + Hintergrundbild: + + + + Custom Avatar Custom Avatar Description in SC, don't use Special Character! Eigener Avatar - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! Eigenes Bild - + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! Bist du sicher ein Quadrat Bild außerhalb der Avatar Zone zu verwenden? Wenn du es als Avatar verwenden möchtest wird es abgetrennt! - + Snapmatic Avatar Zone Snapmatic Avatar Zone - + Select Colour... Farbe auswählen... + + + File + Background Image: File + Datei + + + Import + Importieren + + + Can't import %1 because file can't be open + Kann %1 nicht importieren weil die Datei nicht geöffnet werden kann + + + Can't import %1 because file can't be parsed properly + Kann %1 nicht importieren weil die Datei nicht richtig gelesen werden kann + JsonEditorDialog @@ -479,7 +604,7 @@ Wenn du es als Avatar verwenden möchtest wird es abgetrennt! Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen JSON Fehler - + JSON Error JSON Fehler @@ -532,7 +657,7 @@ Y: %2 &Fertig - + X: %1 Y: %2 X and Y position @@ -752,8 +877,8 @@ Y: %2 - - + + Current: %1 Aktuell: %1 @@ -809,7 +934,7 @@ Y: %2 %1 (%2 wenn verfügbar) - + %1 %1 %1 @@ -823,31 +948,31 @@ Y: %2 Der eigene Ordner initialisiert sobald du %1 neugestartet hast. - + %1 (Next Closest Language) First language a person can talk with a different person/application. "Native" or "Not Native". %1 (Erste näheste Sprache) - + System System in context of System default System - + %1 (Closest to Interface) Next closest language compared to the Interface %1 (Näheste zur Oberfläche) - + Auto Automatic language choice. Automatisch - + The new Custom Folder will initialise after you restart %1. Der eigene Ordner wird initialisiert sobald du %1 neugestartet hast. @@ -856,15 +981,15 @@ Y: %2 Die Änderung der Sprache nimmt Effekt sobald du %1 neugestartet hast. - + No Profile No Profile, as default Kein Profil - + + - Profile: %1 Profil: %1 @@ -978,8 +1103,8 @@ Y: %2 Exportiere als &JPG Bild... - - + + Export as &Picture... Als &Bild exportieren... @@ -988,8 +1113,8 @@ Y: %2 Exportiere als &GTA Snapmatic... - - + + Export as &Snapmatic... Als &Snapmatic exportieren... @@ -1002,8 +1127,8 @@ Y: %2 &Kartenansicht öffnen... - - + + &Edit Properties... Eigenschaften bearb&eiten... @@ -1017,13 +1142,19 @@ Y: %2 Erweitert (&A) - - + + + &Overwrite Image... + Bild &überschreiben... + + + + Open &Map Viewer... &Kartenansicht öffnen... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -1032,32 +1163,32 @@ Taste 2 - Overlay umschalten Pfeiltasten - Navigieren - - + + Snapmatic Picture Viewer Snapmatic Bildansicht - - + + Failed at %1 Fehlgeschlagen beim %1 - - + + No Crew Keine Crew - - - + + + No Players Keine Spieler - + Avatar Preview Mode Press 1 for Default View Avatar Vorschaumodus @@ -1102,7 +1233,7 @@ Drücke A für Standardansicht Keine Crew - + Unknown Location Unbekannter Standort @@ -1272,11 +1403,15 @@ Drücke A für Standardansicht Keine gültige Datei wurde ausgewählt - - + + Open &JSON Editor... &JSON Editor öffnen... + + &Edit Image... + Bild bearb&eiten... + PlayerListDialog @@ -1310,28 +1445,28 @@ Drücke A für Standardansicht Abbre&chen - + Add Players... Spieler hinzufügen... - + Failed to add more Players because the limit of Players are %1! Fehlgeschlagen beim Hinzufügen von mehr Spielern weil der Limit von Spielern %1 ist! - - + + Add Player... Spieler hinzufügen... - + Enter Social Club Player ID Social Club Spieler ID eingeben - + Failed to add Player %1 because Player %1 is already added! Fehlgeschlagen beim Hinzufügen vom Spieler %1 weil Spieler %1 bereits hinzugefügt wurde! @@ -1395,40 +1530,49 @@ Drücke A für Standardansicht Profil schließen - + Loading... Lade... - + Snapmatic Loader Snapmatic Lader - + <h4>Following Snapmatic Pictures got repaired</h4>%1 <h4>Folgende Snapmatic Bilder wurden repariert</h4>%1 - - + + + + Import... Importieren... - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + Import Importieren @@ -1441,14 +1585,14 @@ Drücke A für Standardansicht Importfähige Dateien (*.g5e *.jpg *.png SGTA* PGTA*) - - + + Savegames files (SGTA*) Spielstanddateien (SGTA*) - - + + Snapmatic pictures (PGTA*) Snapmatic Bilder (PGTA*) @@ -1457,29 +1601,33 @@ Drücke A für Standardansicht Alle Bilddateien (*.jpg *.png) - + Importable files (%1) Importfähige Dateien (%1) - + + + All image files (%1) Alle Bilddateien (%1) - - + + + + All files (**) Alle Dateien (**) - - + + Import file %1 of %2 files Importiere Datei %1 von %2 Dateien - + Import failed with... %1 @@ -1488,29 +1636,38 @@ Drücke A für Standardansicht %1 - - + + Failed to read Snapmatic picture Fehler beim Lesen vom Snapmatic Bild - - + + Failed to read Savegame file Fehler beim Lesen von Spielstanddatei - + + + + Can't import %1 because file can't be open + Kann %1 nicht importieren weil die Datei nicht geöffnet werden kann + + + + + Can't import %1 because file can't be parsed properly Kann %1 nicht importieren weil die Datei nicht richtig gelesen werden kann - + Can't import %1 because file format can't be detected Kann %1 nicht importieren weil das Dateiformat nicht erkannt werden kann - + Initialising export... Initialisiere Export... @@ -1519,29 +1676,29 @@ Drücke A für Standardansicht Kann %1 nicht importieren weil das Dateiformat nicht gültig ist - + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e Fehlgeschlagen beim Importieren vom Snapmatic Bild, Datei beginnt nicht mit PGTA oder endet mit .g5e - + Failed to import the Snapmatic picture, the picture is already in the game Fehlgeschlagen beim Importieren vom Snapmatic Bild, dieses Bild ist bereits im Spiel - + %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: %1Exportiere Snapmatic Bilder%2<br><br>JPG Bilder machen es möglich sie mit ein Bildansicht Programm zu öffnen<br>Das GTA Snapmatic Format macht es möglich sie wieder ins Game zu importieren<br><br>Exportieren als: - - - + + + No valid file is selected Keine gültige Datei wurde ausgewählt - + Enabled pictures: %1 of %2 Aktivierte Bilder: %1 von %2 @@ -1550,38 +1707,131 @@ Drücke A für Standardansicht Fehlgeschlagen beim Importieren vom Snapmatic Bild, Datei beginnt nicht mit PGTA - + Failed to import the Snapmatic picture, can't copy the file into profile Fehlgeschlagen beim Importieren vom Snapmatic Bild, kann Snapmatic Bild nicht ins Profil kopieren - + Failed to import the Savegame, can't copy the file into profile Fehlgeschlagen beim Importieren vom Spielstand, kann Spielstanddatei nicht ins Profil kopieren - + Failed to import the Savegame, no Savegame slot is left Fehlgeschlagen beim Importieren vom Spielstand, kein Spielstandslot mehr frei - - + + JPG pictures and GTA Snapmatic JPG Bilder und GTA Snapmatic - - + + JPG pictures only Nur JPG Bilder - - + + GTA Snapmatic only Nur GTA Snapmatic + + + + + + + + + + + + Snapmatic Mass Tool + Snapmatic Massenwerkzeug + + + + + + + You don't have any Snapmatics selected! + Du hast keine Snapmatics ausgewählt! + + + + + + + Patch selected... + Auswahl patchen... + + + + + + + + + + + Patch file %1 of %2 files + Patche Datei %1 von %2 Dateien + + + You don't have any Snapmatic selected! + Du hast keine Snapmatic ausgewählt! + + + + + + + %1 failed with... + +%2 + Action failed with... + %1 fehlgeschlagen mit... + +%2 + + + + Qualify + %1 failed with... + Qualifizieren + + + + Change Players + %1 failed with... + Spieler ändern + + + + Failed to enter a valid Snapmatic Crew ID + Fehlgeschlagen beim Eingeben von einer gültigen Crew ID + + + + Change Crew + %1 failed with... + Crew ändern + + + + Failed to enter a valid Snapmatic title + Fehlgeschlagen beim Eingeben eines gültigen Snapmatic Titel + + + + Change Title + %1 failed with... + Titel ändern + Export Snapmatic pictures @@ -1597,25 +1847,25 @@ Das GTA Snapmatic Format macht es möglich sie wieder ins Game zu importieren Exportieren als: - - + + No Snapmatic pictures or Savegames files are selected Keine Snapmatic Bilder oder Spielstände ausgewählt - - - + + + Remove selected Auswahl löschen - + You really want remove the selected Snapmatic picutres and Savegame files? Möchtest du wirklich die ausgewählten Snapmatic Bilder und Spielstanddateien löschen? - + Failed at remove the complete selected Snapmatic pictures and/or Savegame files Fehlgeschlagen beim kompletten entfernen der ausgewählten Snapmatic Bilder und/oder der Spielstanddateien @@ -1636,10 +1886,8 @@ Exportieren als: Fehlgeschlagenen beim Import vom Spielstand weil kein Spielstandslot mehr übrig ist - - - - + + Export selected Auswahl exportieren @@ -1660,7 +1908,9 @@ Exportieren als: Wie sollen wir mit den Snapmatic Bilder umgehen? - + + + Export selected... Auswahl exportieren... @@ -1673,7 +1923,7 @@ Exportieren als: Initialisierung... - + Export failed with... %1 @@ -1703,13 +1953,13 @@ Exportieren als: Exportiere Datei %1 von %2 Dateien - + All profile files (*.g5e SGTA* PGTA*) Alle Profildateien (*.g5e SGTA* PGTA*) - - + + GTA V Export (*.g5e) GTA V Export (*.g5e) @@ -1736,7 +1986,7 @@ Exportieren als: SavegameDialog - + Savegame Viewer Spielstandanzeiger @@ -1768,7 +2018,7 @@ Exportieren als: Schließen - + Failed at %1 Fehlgeschlagen bei %1 @@ -1877,32 +2127,32 @@ Exportieren als: Fehlgeschlagen beim Löschen %1 von deinen Spielständen - + &View A&nsehen - + &Remove Entfe&rnen - + &Select Au&swählen - + &Deselect A&bwählen - + Select &All &Alles auswählen - + &Deselect All Alles a&bwählen @@ -1941,7 +2191,7 @@ Exportieren als: Spielstand kopieren - + &Export &Exportieren @@ -2017,13 +2267,13 @@ Exportieren als: - - - - - - - + + + + + + + Snapmatic Properties Snapmatic Eigenschaften @@ -2067,7 +2317,8 @@ Exportieren als: Meme - + + Snapmatic Title Snapmatic Titel @@ -2077,7 +2328,7 @@ Exportieren als: Snapmatic Werte - + Crew: %1 (%2) Crew: %1 (%2) @@ -2087,13 +2338,13 @@ Exportieren als: Titel: %1 (%2) - + Players: %1 (%2) Multiple Player are inserted here Spieler: %1 (%2) - + Player: %1 (%2) One Player is inserted here Spieler: %1 (%2) @@ -2138,9 +2389,9 @@ Exportieren als: Cancel - + - + Edit Bearbeiten @@ -2167,40 +2418,43 @@ Exportieren als: Nein - + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? <h4>Ungespeicherte Änderungen erkannt</h4>Möchtest du den JSON Inhalt speichern bevor du verlässt? - + Patching of Snapmatic Properties failed because of %1 Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen %1 - + Patching of Snapmatic Properties failed because of JSON Error Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen JSON Fehler - - - - + + + + Patching of Snapmatic Properties failed because of I/O Error Patchen von Snapmatic Eigenschaften fehlgeschlagen wegen I/O Fehler - + + New Snapmatic title: Neuer Snapmatic Titel: - + + Snapmatic Crew Snapmatic Crew - + + New Snapmatic crew: Neue Snapmatic Crew: @@ -2290,19 +2544,19 @@ Exportieren als: Datei lesen %1 wegen %2 - + JSON is incomplete and malformed JSON ist unvollständig und Fehlerhaft - + JSON is incomplete JSON ist unvollständig - + JSON is malformed JSON ist Fehlerhaft @@ -2342,18 +2596,18 @@ Exportieren als: - - + + Delete picture Bild löschen - + Are you sure to delete %1 from your Snapmatic pictures? Bist du sicher %1 von deine Snapmatic Bilder zu löschen? - + Edi&t Bearbei&ten @@ -2366,7 +2620,7 @@ Exportieren als: &Im Spiel deaktivieren - + &Export &Exportieren @@ -2379,12 +2633,12 @@ Exportieren als: Exportiere als &GTA Snapmatic - + Show &In-game &Im Spiel anzeigen - + Hide &In-game &Im Spiel ausblenden @@ -2417,32 +2671,32 @@ Exportieren als: Exportiere als &Snapmatic... - + &View A&nsehen - + &Remove Entfe&rnen - + &Select Au&swählen - + &Deselect A&bwählen - + Select &All Alles &auswählen - + &Deselect All Alles a&bwählen @@ -2490,7 +2744,7 @@ Exportieren als: Bist du sicher %1 von deinen Snapmatic Bilder zu löschen? - + Failed at deleting %1 from your Snapmatic pictures Fehlgeschlagen beim Löschen von %1 von deinen Snapmatic Bildern @@ -2530,9 +2784,8 @@ Exportieren als: Über gta5sync - Ctrl+A - Strg+A + Strg+A Close @@ -2543,18 +2796,16 @@ Exportieren als: Optionen - Ctrl+O - Strg+O + Strg+O Select all Alles auswählen - Ctrl+S - Strg+S + Strg+S Deselect all @@ -2569,21 +2820,19 @@ Exportieren als: Auswahl exportieren - Ctrl+E - Strg+E + Strg+E Delete selected Auswahl löschen - Ctrl+D - Strg+D + Strg+D - + Exit Beenden @@ -2597,14 +2846,13 @@ Exportieren als: &Über Produkt - + &Exit B&eenden - Ctrl+Q - Strg+Q + Strg+Q @@ -2647,6 +2895,59 @@ Exportieren als: &Profile &Profil + + + Selection &mass tools + Auswahl &Massenwerkzeuge + + + + Change &Title... + &Titel ändern... + + + + &Qualify as Avatar + Als Avatar &qualifizieren + + + Qualify as &Avatar + Als &Avatar qualifizieren + + + + Change &Players... + S&pieler ändern... + + + Change Title... + Titel ändern... + + + + Change &Crew... + &Crew ändern... + + + Change Crew... + Crew ändern... + + + Change Players... + Spieler ändern... + + + Set Title... + Titel ändern... + + + Set Crew... + Crew ändern... + + + Qualify as Avatar + Als Avatar qualifizieren + Selection visibility Auswahl Sichtbarkeit @@ -2656,43 +2957,40 @@ Exportieren als: &Über gta5sync - + Close &Profile &Profil schließen - Ctrl+End - Strg+Ende + Strg+Ende - Ctrl+Del - Strg+Entf + Strg+Entf - + &Open File... Datei &öffnen... - - + + Select &GTA V Folder... Wähle &GTA V Ordner... - Ctrl+G - Strg+G + Strg+G - + Show In-gam&e Im Spiel anzeig&en - + Hi&de In-game Im Spiel ausblen&den @@ -2705,18 +3003,16 @@ Exportieren als: Im Spiel aktivier&en - Shift+E - Umschalt+E + Umschalt+E &Disable In-game Im Spiel &deaktivieren - Shift+D - Umschalt+D + Umschalt+D @@ -2728,36 +3024,35 @@ Exportieren als: &Profil auswählen - Ctrl+P - Strg+P + Strg+P &Options &Optionen - + &Settings Ein&stellungen - + Select &All &Alles auswählen - + &Deselect All Alles a&bwählen - + &Export selected... Auswahl &exportieren... - + &Remove selected Auswahl entfe&rnen @@ -2766,14 +3061,13 @@ Exportieren als: Strg+R - + &Import files... Dateien &importieren... - Ctrl+I - Strg+I + Strg+I GTA V Folder not found! @@ -2781,16 +3075,16 @@ Exportieren als: - - + + Select Profile Profil auswählen - - - - + + + + Select GTA V Folder... Wähle GTA V Ordner... @@ -2799,7 +3093,7 @@ Exportieren als: Wähle GTA V &Ordner... - + Open File... Datei öffnen... @@ -2814,22 +3108,26 @@ Exportieren als: %2 - %1 - + Selection mass tools + Auswahl Massenwerkzeuge + + + - + &About %1 &Über %1 - - - - + + + + Open File Datei öffnen - + Can't open %1 because of not valid file format Kann nicht %1 öffnen weil Dateiformat nicht gültig ist diff --git a/res/gta5sync_en_US.qm b/res/gta5sync_en_US.qm index f097a03..9731613 100644 Binary files a/res/gta5sync_en_US.qm and b/res/gta5sync_en_US.qm differ diff --git a/res/gta5sync_en_US.ts b/res/gta5sync_en_US.ts index 496ce75..1c0671e 100644 --- a/res/gta5sync_en_US.ts +++ b/res/gta5sync_en_US.ts @@ -28,48 +28,48 @@ Running with Qt %6<br/> - + Using %1 %2 Using specific library, example Using libmyfuck - + Translated by %1 Translated by translator, example Translated by Syping - + NAME_OF_TRANSLATOR Enter your name there Syping - + TRANSLATOR_PROFILE Enter your proilfe there, example a GitHub profile, E-Mail with "mailto: afucker@sumfuck.com" or a webpage https://github.com/Syping/ - + A project for viewing and sync Grand Theft Auto V Snapmatic<br/> Pictures and Savegames - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames - + Copyright &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> @@ -107,7 +107,7 @@ Pictures and Savegames Custom - + @@ -182,112 +182,203 @@ Pictures and Savegames + + ImageEditorDialog + + + + + Snapmatic Image Editor + + + + + Overwrite Image... + + + + + + Capacity: %1 + + + + + ? + + + + + &Import... + + + + + &Overwrite + + + + + &Close + + + + + Patching of Snapmatic Image failed because of I/O Error + + + + + Patching of Snapmatic Image failed because of Image Error + + + + + Every taken Snapmatic have a different Capacity, a Snapmatic with higher Capacity can store a picture with better quality. + + + ImportDialog - + Import... - - Settings - - - - - - + + + Background Colour: <span style="color: %1">%1</span> Background Color: <span style="color: %1">%1</span> - + + ... - + Avatar - + + Picture + + + + + Ignore Aspect Ratio - + + Background + + + + + Background Image: %1 + + + + + X + + + + + Force Colour in Avatar Zone + Force Color in Avatar Zone + + + Import picture - + &OK - + Discard picture - + &Cancel - - + + + + Background Image: + + + + + Custom Avatar Custom Avatar Description in SC, don't use Special Character! - + - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! - + - + Snapmatic Avatar Zone - + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! - + Select Colour... Select Color... + + + File + Background Image: File + + JsonEditorDialog Snapmatic JSON Editor - + &Save - + &Close - + - + JSON Error - + @@ -295,39 +386,39 @@ When you want to use it as Avatar the image will be detached! Snapmatic Map Viewer - + &Close - + &Apply - + &Revert - + &Set - + &Done - + - + X: %1 Y: %2 X and Y position - + @@ -466,50 +557,50 @@ Y: %2 Language for Areas - + Style - + Style: - + Font - + Always use Message Font (Windows 2003 and earlier) - + Interface - + Language for Interface - + - - + + Current: %1 - + Use Default Style (Restart) - + @@ -544,50 +635,50 @@ Y: %2 - + %1 (Next Closest Language) First language a person can talk with a different person/application. "Native" or "Not Native". - + System System in context of System default - + %1 (Closest to Interface) Next closest language compared to the Interface - + - + Auto Automatic language choice. - + - + %1 %1 - + The new Custom Folder will initialise after you restart %1. The new Custom Folder will initialize after you restart %1. - + No Profile No Profile, as default - + + - Profile: %1 @@ -628,68 +719,74 @@ Y: %2 - - + + Export as &Picture... - - + + Export as &Snapmatic... - - + + + &Overwrite Image... + + + + + &Edit Properties... - - + + Open &Map Viewer... - + - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate - - + + Snapmatic Picture Viewer - - + + Failed at %1 - - - + + + No Players - - + + No Crew - + Unknown Location - + Avatar Preview Mode Press 1 for Default View @@ -746,22 +843,22 @@ Press 1 for Default View Failed to export the picture because the system occurred a write failure - + Failed to export the picture because the format detection failures - + Failed to export the picture because the file can't be written - + Failed to export the picture because of an unknown reason - + @@ -798,10 +895,10 @@ Press 1 for Default View - - + + Open &JSON Editor... - + @@ -809,53 +906,53 @@ Press 1 for Default View Edit Players... - + Available Players: - + Selected Players: - + &Apply - + &Cancel - + - + Add Players... - + - + Failed to add more Players because the limit of Players are %1! - + - - + + Add Player... - + - + Enter Social Club Player ID - + - + Failed to add Player %1 because Player %1 is already added! - + @@ -903,222 +1000,331 @@ Press 1 for Default View - + Enabled pictures: %1 of %2 - + Loading... - + Snapmatic Loader - + - + <h4>Following Snapmatic Pictures got repaired</h4>%1 - + - - + + + + Import... - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + Import - + Importable files (%1) - - + + GTA V Export (*.g5e) - - + + Savegames files (SGTA*) - - + + Snapmatic pictures (PGTA*) - + + + All image files (%1) - - + + + + All files (**) - - - + + + No valid file is selected - - + + Import file %1 of %2 files - + Import failed with... %1 - - + + Failed to read Snapmatic picture - - + + Failed to read Savegame file - + + + + Can't import %1 because file can't be open + + + + + + Can't import %1 because file can't be parsed properly - + Can't import %1 because file format can't be detected - + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e - + Failed to import the Snapmatic picture, the picture is already in the game - + Failed to import the Snapmatic picture, can't copy the file into profile - + Failed to import the Savegame, can't copy the file into profile - + Failed to import the Savegame, no Savegame slot is left - - - - + + Export selected - - + + JPG pictures and GTA Snapmatic - - + + JPG pictures only - - + + GTA Snapmatic only - + %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: - + + + Export selected... - + Initialising export... Initializing export... - + Export failed with... %1 - - + + No Snapmatic pictures or Savegames files are selected - - - + + + Remove selected - + You really want remove the selected Snapmatic picutres and Savegame files? - + Failed at remove the complete selected Snapmatic pictures and/or Savegame files - + + + + + + + + + + + Snapmatic Mass Tool + + + + + + + + You don't have any Snapmatics selected! + + + + + + + + Patch selected... + + + + + + + + + + + + Patch file %1 of %2 files + + + + + + + + %1 failed with... + +%2 + Action failed with... + + + + + Qualify + %1 failed with... + + + + + Change Players + %1 failed with... + + + + + Failed to enter a valid Snapmatic Crew ID + + + + + Change Crew + %1 failed with... + + + + + Failed to enter a valid Snapmatic title + + + + + Change Title + %1 failed with... + + + + All profile files (*.g5e SGTA* PGTA*) @@ -1138,14 +1344,14 @@ Press 1 for Default View <h4>Welcome to %1!</h4>You want to configure %1 before you start using it? - + SavegameDialog - + Savegame Viewer @@ -1165,7 +1371,7 @@ Press 1 for Default View - + Failed at %1 @@ -1214,37 +1420,37 @@ Press 1 for Default View - + &View - + &Export - + &Remove - + &Select - + &Deselect - + Select &All - + &Deselect All @@ -1325,7 +1531,7 @@ Press 1 for Default View Delete Savegame - + @@ -1338,13 +1544,13 @@ Press 1 for Default View - - - - - - - + + + + + + + Snapmatic Properties @@ -1389,7 +1595,7 @@ Press 1 for Default View - + Crew: %1 (%2) @@ -1399,16 +1605,16 @@ Press 1 for Default View - + Players: %1 (%2) Multiple Player are inserted here - + - + Player: %1 (%2) One Player is inserted here - + @@ -1442,9 +1648,9 @@ Press 1 for Default View - + - + Edit @@ -1461,45 +1667,49 @@ Press 1 for Default View - + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? - + - + Patching of Snapmatic Properties failed because of %1 - + - + Patching of Snapmatic Properties failed because of JSON Error - + - - - - + + + + Patching of Snapmatic Properties failed because of I/O Error - + + Snapmatic Title - + + New Snapmatic title: - + + Snapmatic Crew - + + New Snapmatic crew: @@ -1514,61 +1724,61 @@ Press 1 for Default View open file %1 - + header not exists - + header is malformed - + picture not exists (%1) - + JSON not exists (%1) - + title not exists (%1) - + description not exists (%1) - + reading file %1 because of %2 Example for %2: JSON is malformed error - + + + + + + JSON is incomplete and malformed + - - JSON is incomplete and malformed - + + JSON is incomplete + - - JSON is incomplete - - - - JSON is malformed - + @@ -1615,8 +1825,8 @@ Press 1 for Default View - - + + Delete picture @@ -1626,62 +1836,62 @@ Press 1 for Default View - + Edi&t - + Show &In-game - + Hide &In-game - + &Export - + &View - + &Remove - + &Select - + &Deselect - + Select &All - + &Deselect All - + Are you sure to delete %1 from your Snapmatic pictures? - + Failed at deleting %1 from your Snapmatic pictures @@ -1751,173 +1961,133 @@ Press 1 for Default View - + - + &About %1 - - Ctrl+P - - - - + &Exit - + Exit - - Ctrl+Q - - - - + Close &Profile - - Ctrl+End - - - - + &Settings - - Ctrl+S - - - - + Select &All - - Ctrl+A - - - - + &Deselect All - - Ctrl+D - - - - + &Export selected... - - Ctrl+E - - - - + &Remove selected - - Ctrl+Del - - - - + &Import files... - - Ctrl+I - - - - + &Open File... - - Ctrl+O - - - - - + + Select &GTA V Folder... - - - - + + + + Select GTA V Folder... - - Ctrl+G - - - - + Show In-gam&e - - Shift+E - - - - + Hi&de In-game - - Shift+D + + Change &Players... + + + + + Selection &mass tools + + + + + Change &Title... + + + + + Change &Crew... + + + + + &Qualify as Avatar - - + + Select Profile - + Open File... - - - - + + + + Open File - + Can't open %1 because of not valid file format diff --git a/res/gta5sync_fr.qm b/res/gta5sync_fr.qm index a016b03..56814ae 100644 Binary files a/res/gta5sync_fr.qm and b/res/gta5sync_fr.qm differ diff --git a/res/gta5sync_fr.ts b/res/gta5sync_fr.ts index fbc21d1..2e003d5 100644 --- a/res/gta5sync_fr.ts +++ b/res/gta5sync_fr.ts @@ -131,43 +131,43 @@ Copyright &copy; <a href="%5">%6</a> %7<br/> https://github.com/Ganjalo/ - + Using %1 %2 Using specific library, example Using libmyfuck Utilise %1 %2 - + Translated by %1 Translated by translator, example Translated by Syping Traduit par %1 - + NAME_OF_TRANSLATOR Enter your name there Ganjalo - + TRANSLATOR_PROFILE Enter your proilfe there, example a GitHub profile, E-Mail with "mailto: afucker@sumfuck.com" or a webpage https://github.com/Ganjalo/ - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Un outil pour gérer les photos Snapmatic<br/> et les fichiers de sauvegarde de Grand Theft Auto V - + Copyright &copy; <a href="%1">%2</a> %3 Copyright &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> %1 est distribué sous license <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> @@ -176,7 +176,7 @@ et les fichiers de sauvegarde de Grand Theft Auto V Copyright &copy; <a href="%1">%2</a> %3<br/>%4 est distribué sous license <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> - + A project for viewing and sync Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Un outil pour gérer et synchroniser les photos Snapmatic<br/> @@ -291,17 +291,72 @@ et les fichiers de sauvegarde de Grand Theft Auto V &Fermer + + ImageEditorDialog + + + + + Snapmatic Image Editor + + + + + Overwrite Image... + + + + + + Capacity: %1 + + + + + ? + + + + + &Import... + &Importer... + + + + &Overwrite + + + + + &Close + + + + + Patching of Snapmatic Image failed because of I/O Error + + + + + Patching of Snapmatic Image failed because of Image Error + + + + + Every taken Snapmatic have a different Capacity, a Snapmatic with higher Capacity can store a picture with better quality. + + + ImportDialog - + Import... Importer... - Settings - Paramètres + Paramètres &Keep Aspect Ratio @@ -320,77 +375,121 @@ et les fichiers de sauvegarde de Grand Theft Auto V Conserver le rapport d'aspect - + + Ignore Aspect Ratio Déverrouiller le ratio d'aspect - + Avatar Avatar - - - + + Picture + + + + + Background + + + + + + Background Colour: <span style="color: %1">%1</span> - + + ... ... - + + Background Image: %1 + + + + + X + + + + + Force Colour in Avatar Zone + + + + Import picture - + &OK &OK - + Discard picture - + &Cancel A&nnuler - - + + + + Background Image: + + + + + Custom Avatar Custom Avatar Description in SC, don't use Special Character! - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! - + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! - + Snapmatic Avatar Zone - + Select Colour... + + + File + Background Image: File + + + + Import + Importer + JsonEditorDialog @@ -410,7 +509,7 @@ When you want to use it as Avatar the image will be detached! - + JSON Error @@ -448,7 +547,7 @@ When you want to use it as Avatar the image will be detached! - + X: %1 Y: %2 X and Y position @@ -637,8 +736,8 @@ Y: %2 - - + + Current: %1 @@ -690,37 +789,37 @@ Y: %2 Système - + %1 (Next Closest Language) First language a person can talk with a different person/application. "Native" or "Not Native". - + System System in context of System default Système - + %1 (Closest to Interface) Next closest language compared to the Interface - + Auto Automatic language choice. - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. @@ -733,15 +832,15 @@ Y: %2 Le changement de langue sera actif au prochain lancement de %1. - + No Profile No Profile, as default Aucun profil - + + - Profile: %1 Profil : %1 @@ -907,8 +1006,8 @@ Y: %2 Exporter comme image &JPG... - - + + Export as &Picture... @@ -917,8 +1016,8 @@ Y: %2 Exporter comme &GTA Snapmatic... - - + + Export as &Snapmatic... @@ -927,19 +1026,25 @@ Y: %2 Édi&ter - - + + + &Overwrite Image... + + + + + &Edit Properties... Modifier les &propriétés... - - + + Open &Map Viewer... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -948,32 +1053,32 @@ Touche 2 - Activer/désactiver l'overlay Touches fléchées - Naviguer - - + + Snapmatic Picture Viewer Visionneuse de photo Snapmatic - - + + Failed at %1 Echec de %1 - - + + No Crew Aucun crew - - - + + + No Players Aucun joueurs - + Avatar Preview Mode Press 1 for Default View Mode Aperçu Avatar @@ -992,7 +1097,7 @@ Appuyer sur 1 pour le mode par défaut Aucun crew - + Unknown Location Emplacement inconnu @@ -1026,8 +1131,8 @@ Appuyer sur 1 pour le mode par défaut Échec de l'export de la photo Snapmatic - - + + Open &JSON Editor... @@ -1060,28 +1165,28 @@ Appuyer sur 1 pour le mode par défaut - + Add Players... - + Failed to add more Players because the limit of Players are %1! - - + + Add Player... - + Enter Social Club Player ID - + Failed to add Player %1 because Player %1 is already added! @@ -1135,45 +1240,54 @@ Appuyer sur 1 pour le mode par défaut Copie du fichier %1 sur %2 - + Enabled pictures: %1 of %2 Photos activées : %1 sur %2 - + Loading... Chargement... - + Snapmatic Loader - + <h4>Following Snapmatic Pictures got repaired</h4>%1 - - + + + + Import... Importer... - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + Import Importer @@ -1182,36 +1296,40 @@ Appuyer sur 1 pour le mode par défaut Fichiers de profil GTA (SGTA* PGTA*) - - + + Savegames files (SGTA*) Fichiers de sauvegarde GTA (SGTA*) - - + + Snapmatic pictures (PGTA*) Photos Snapmatic (PGTA*) - + + + All image files (%1) - - + + + + All files (**) Tous les fichiers (**) - - + + Import file %1 of %2 files Importation du fichier %1 sur %2 - + Import failed with... %1 @@ -1220,26 +1338,26 @@ Appuyer sur 1 pour le mode par défaut %1 - - - + + + No valid file is selected Fichier invalide - + Importable files (%1) - - + + Failed to read Snapmatic picture Impossible d'ouvrir la photo Snapmatic - - + + Failed to read Savegame file Impossible de lire le fichier de sauvegarde @@ -1260,87 +1378,183 @@ Appuyer sur 1 pour le mode par défaut Tous les fichiers image (*.jpg *.png) - + + + + Can't import %1 because file can't be open + + + + + + Can't import %1 because file can't be parsed properly - + Can't import %1 because file format can't be detected - + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e Impossible d'importer la photo Snapmatic,nom de fichier incorrect (PGTA*, *.g5e) - + Failed to import the Snapmatic picture, the picture is already in the game Impossible d'importer la photo Snapmatic, un fichier du même nom existe déjà - + Failed to import the Snapmatic picture, can't copy the file into profile Impossible d'importer la photo Snapmatic, impossible de copier le fichier dans le profil - + Failed to import the Savegame, can't copy the file into profile Impossible d'importer la sauvegarde, impossible de copier le fichier dans le profil - + Failed to import the Savegame, no Savegame slot is left Impossible d'importer la sauvegarde, aucun emplacement libre - - - - + + Export selected Exporter la sélection - - + + JPG pictures and GTA Snapmatic Images JPG et GTA Snapmatic - - + + JPG pictures only Images JPG seulement - - + + GTA Snapmatic only GTA Snapmatic seulement - + %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: %1Exporter les photos Snapmatic%2<br><br>Les fichiers JPG permettent d'ouvrir les photos avec une visionneuse d'images<br>Les GTA Snapmatic permettent d'importer les photos dans le jeu<br><br>Exporter comme : - + + + Export selected... Exporter la sélection... - + Initialising export... + + + + + + + + + + + + Snapmatic Mass Tool + + + + + + + + You don't have any Snapmatics selected! + + + + + + + + Patch selected... + + + + + + + + + + + + Patch file %1 of %2 files + + + + + + + + %1 failed with... + +%2 + Action failed with... + + + + + Qualify + %1 failed with... + + + + + Change Players + %1 failed with... + + + + + Failed to enter a valid Snapmatic Crew ID + + + + + Change Crew + %1 failed with... + + + + + Failed to enter a valid Snapmatic title + + + + + Change Title + %1 failed with... + + Initializing export... Initialisation de l'export... - + Export failed with... %1 @@ -1349,36 +1563,36 @@ Appuyer sur 1 pour le mode par défaut %1 - - + + No Snapmatic pictures or Savegames files are selected Aucun fichier de sauvegarde ou photo Snapmatic sélectionné - - - + + + Remove selected Supprimer la sélection - + You really want remove the selected Snapmatic picutres and Savegame files? Supprimer la sélection ? - + Failed at remove the complete selected Snapmatic pictures and/or Savegame files Impossible de supprimer la sélection - + All profile files (*.g5e SGTA* PGTA*) Tous les fichiers de profil (*.g5e SGTA* PGTA*) - - + + GTA V Export (*.g5e) GTA V Export (*.g5e) @@ -1405,7 +1619,7 @@ Appuyer sur 1 pour le mode par défaut SavegameDialog - + Savegame Viewer Gestionnaire de sauvegardes @@ -1425,7 +1639,7 @@ Appuyer sur 1 pour le mode par défaut &Fermer - + Failed at %1 Échec de %1 @@ -1474,7 +1688,7 @@ Appuyer sur 1 pour le mode par défaut Supprimer - + &Export &Exporter @@ -1565,32 +1779,32 @@ Appuyer sur 1 pour le mode par défaut Impossible de supprimer %1 - + &View &Voir - + &Remove &Supprimer - + &Select &Sélectionner - + &Deselect &Déselectionner - + Select &All Sélectionner to&ut - + &Deselect All &Déselectionner tout @@ -1600,13 +1814,13 @@ Appuyer sur 1 pour le mode par défaut - - - - - - - + + + + + + + Snapmatic Properties Propriétés Snapmatic @@ -1650,7 +1864,8 @@ Appuyer sur 1 pour le mode par défaut Meme - + + Snapmatic Title Titre Snapmatic @@ -1660,7 +1875,7 @@ Appuyer sur 1 pour le mode par défaut Valeurs Snapmatic - + Crew: %1 (%2) Crew : %1 (%2) @@ -1670,13 +1885,13 @@ Appuyer sur 1 pour le mode par défaut Titre : %1 (%2) - + Players: %1 (%2) Multiple Player are inserted here - + Player: %1 (%2) One Player is inserted here @@ -1713,9 +1928,9 @@ Appuyer sur 1 pour le mode par défaut A&nnuler - + - + Edit Éditer @@ -1734,40 +1949,43 @@ Appuyer sur 1 pour le mode par défaut Non - + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? - + Patching of Snapmatic Properties failed because of %1 - + Patching of Snapmatic Properties failed because of JSON Error - - - - + + + + Patching of Snapmatic Properties failed because of I/O Error La modification des propriétés Snapmatic a échoué : erreur d'entrée/sortie - + + New Snapmatic title: Nouveau titre Snapmatic : - + + Snapmatic Crew Crew Snapmatic - + + New Snapmatic crew: Nouveau crew Snapmatic : @@ -1821,19 +2039,19 @@ Appuyer sur 1 pour le mode par défaut - + JSON is incomplete and malformed - + JSON is incomplete - + JSON is malformed @@ -1883,8 +2101,8 @@ Appuyer sur 1 pour le mode par défaut - - + + Delete picture Supprimer la photo @@ -1894,27 +2112,27 @@ Appuyer sur 1 pour le mode par défaut Supprimer - + Are you sure to delete %1 from your Snapmatic pictures? Supprimer %1 ? - + Failed at deleting %1 from your Snapmatic pictures Impossible de supprimer %1 - + Edi&t Édi&ter - + Show &In-game &Visible en jeu - + Hide &In-game &Invisible en jeu @@ -1923,7 +2141,7 @@ Appuyer sur 1 pour le mode par défaut Modifier les &propriétés... - + &Export &Exporter @@ -1936,32 +2154,32 @@ Appuyer sur 1 pour le mode par défaut Exporter comme &GTA Snapmatic... - + &View &Voir - + &Remove S&upprimer - + &Select &Sélectionner - + &Deselect &Déselectionner - + Select &All Sélectionner &tout - + &Deselect All &Déselectionner tout @@ -2028,133 +2246,146 @@ Appuyer sur 1 pour le mode par défaut &À propos de gta5sync - Ctrl+P - Ctrl+P + Ctrl+P - + &Exit &Quitter - + Exit Quitter - Ctrl+Q - Ctrl+Q + Ctrl+Q - + Close &Profile Fermer le &profil - Ctrl+End - Ctrl + Fin + Ctrl + Fin - + &Settings Paramètre&s - Ctrl+S - Ctrl+S + Ctrl+S - + Select &All Sélectionner &tout - Ctrl+A - Ctrl+A + Ctrl+A - + &Deselect All &Désélectionner tout - Ctrl+D - Ctrl+D + Ctrl+D - + &Export selected... &Exporter la sélection... - Ctrl+E - Ctrl+E + Ctrl+E - + &Remove selected &Supprimer la sélection - Ctrl+Del - Ctrl+Del + Ctrl+Del - + &Import files... &Importer... - Ctrl+I - Ctrl+I + Ctrl+I - + &Open File... &Ouvrir... - Ctrl+O - Ctrl+O + Ctrl+O - - + + Select &GTA V Folder... Modifier l'emplacement de &GTA V... - - - - + + + + Select GTA V Folder... Modifier l'emplacement de GTA V... - Ctrl+G - Ctrl+G + Ctrl+G - + Show In-gam&e Rendre visible &en jeu - Shift+E - Shift+E + Shift+E + + + + Change &Players... + + + + + Selection &mass tools + + + + + Change &Title... + + + + + Change &Crew... + + + + + &Qualify as Avatar + @@ -2162,14 +2393,13 @@ Appuyer sur 1 pour le mode par défaut &Visibilité de la sélection - + Hi&de In-game Ren&dre invisible en jeu - Shift+D - Shift+D + Shift+D @@ -2178,34 +2408,34 @@ Appuyer sur 1 pour le mode par défaut %2 - %1 - + - + &About %1 &À propos de %1 - - + + Select Profile Sélectionner un profil - + Open File... Ouvrir... - - - - + + + + Open File Ouvrir - + Can't open %1 because of not valid file format Impossible d'ouvrir %1, format invalide diff --git a/res/gta5sync_ru.qm b/res/gta5sync_ru.qm index dccda8d..bf22251 100644 Binary files a/res/gta5sync_ru.qm and b/res/gta5sync_ru.qm differ diff --git a/res/gta5sync_ru.ts b/res/gta5sync_ru.ts index d76c32d..44a51c4 100644 --- a/res/gta5sync_ru.ts +++ b/res/gta5sync_ru.ts @@ -91,43 +91,43 @@ Running with Qt %6<br/> https://github.com/VADemon/ - + Using %1 %2 Using specific library, example Using libmyfuck Использует %1 %2 - + Translated by %1 Translated by translator, example Translated by Syping Перевёл %1 - + NAME_OF_TRANSLATOR Enter your name there VADemon - + TRANSLATOR_PROFILE Enter your proilfe there, example a GitHub profile, E-Mail with "mailto: afucker@sumfuck.com" or a webpage https://github.com/VADemon/ - + A project for viewing Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Проект для просмотра Grand Theft Auto V Snapmatic<br/> картинок и сохранений - + Copyright &copy; <a href="%1">%2</a> %3 Copyright &copy; <a href="%1">%2</a> %3 - + %1 is licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> %1 под лицензией <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> @@ -136,7 +136,7 @@ Pictures and Savegames Copyright &copy; <a href="%1">%2</a> %3<br/>%4 под лицензией <a href="https://www.gnu.org/licenses/gpl-3.0.html#content">GNU GPLv3</a> - + A project for viewing and sync Grand Theft Auto V Snapmatic<br/> Pictures and Savegames Проект для просмотра и синхронизирования <br/> @@ -253,17 +253,72 @@ Grand Theft Auto V Snapmatic картинок и сохранений&Закрыть + + ImageEditorDialog + + + + + Snapmatic Image Editor + + + + + Overwrite Image... + + + + + + Capacity: %1 + + + + + ? + + + + + &Import... + &Импортировать... + + + + &Overwrite + + + + + &Close + &Закрыть + + + + Patching of Snapmatic Image failed because of I/O Error + + + + + Patching of Snapmatic Image failed because of Image Error + + + + + Every taken Snapmatic have a different Capacity, a Snapmatic with higher Capacity can store a picture with better quality. + + + ImportDialog - + Import... Импортировать... - Settings - Настройки + Настройки &Keep Aspect Ratio @@ -282,78 +337,126 @@ Grand Theft Auto V Snapmatic картинок и сохраненийОставить соотношение сторон - + + Ignore Aspect Ratio Игнорировать соотн. сторон - + Avatar Аватар - - - + + Picture + + + + + Background + + + + + + Background Colour: <span style="color: %1">%1</span> Цвет фона: <span style="color: %1">%1</span> - + + ... ... - + + Background Image: %1 + + + + + X + + + + + Force Colour in Avatar Zone + + + + Import picture Импортировать картинку - + &OK &ОК - + Discard picture Отклонить картинку - + &Cancel Я не уверен насчет горячих клавиш... От&мена - - + + + + Background Image: + + + + + Custom Avatar Custom Avatar Description in SC, don't use Special Character! - - + + Custom Picture Custom Picture Description in SC, don't use Special Character! - + Are you sure to use a square image outside of the Avatar Zone? When you want to use it as Avatar the image will be detached! Ты точно хочешь использовать квадратное изображение вне зоны аватарки? Если это аватар, то изображение будет обрезано! - + Snapmatic Avatar Zone Зона Snapmatic Аватарки - + Select Colour... Выбрать цвет... + + + File + Background Image: File + Файл + + + Import + Импортировать + + + Can't import %1 because file can't be parsed properly + Не получилось импортировать %1, файл не может быть правильно обработан + JsonEditorDialog @@ -373,7 +476,7 @@ When you want to use it as Avatar the image will be detached! &Закрыть - + JSON Error @@ -418,7 +521,7 @@ Y: %2 - + X: %1 Y: %2 X and Y position @@ -601,8 +704,8 @@ Y: %2 - - + + Current: %1 @@ -655,37 +758,37 @@ Y: %2 %1 (%2 если имеется) - + %1 (Next Closest Language) First language a person can talk with a different person/application. "Native" or "Not Native". - + System System in context of System default Система - + %1 (Closest to Interface) Next closest language compared to the Interface - + Auto Automatic language choice. - + %1 %1 %1 - + The new Custom Folder will initialise after you restart %1. Другая папка будет загружена после перезапуска %1. @@ -698,15 +801,15 @@ Y: %2 Язык изменится после перезапуска %1. - + No Profile No Profile, as default Нет профиля - + + - Profile: %1 Профиль: %1 @@ -786,8 +889,8 @@ Y: %2 Эксп&ортировать как картинку JPG... - - + + Export as &Picture... Экспортировать как &картинку... @@ -796,8 +899,8 @@ Y: %2 Экс&портировать как GTA Snapmatic... - - + + Export as &Snapmatic... Экспортировать как &Snapmatic... @@ -810,19 +913,25 @@ Y: %2 Открыть &карту... - - + + + &Overwrite Image... + + + + + &Edit Properties... &Изменить свойства... - - + + Open &Map Viewer... - + Key 1 - Avatar Preview Mode Key 2 - Toggle Overlay Arrow Keys - Navigate @@ -831,32 +940,32 @@ Arrow Keys - Navigate Стрелки - Навигация - - + + Snapmatic Picture Viewer Просмотрщик фотографий Snapmatic - - + + Failed at %1 Ошибка при %1 - - + + No Crew Вне банды - - - + + + No Players Игроков нет - + Avatar Preview Mode Press 1 for Default View Режим просмотра аватарок @@ -871,7 +980,7 @@ Press 1 for Default View Без группы - + Unknown Location Неизвестное место @@ -1009,8 +1118,8 @@ Press 1 for Default View Не удалось скопировать текущую картинку Snapmatic - - + + Open &JSON Editor... @@ -1043,28 +1152,28 @@ Press 1 for Default View - + Add Players... - + Failed to add more Players because the limit of Players are %1! - - + + Add Player... - + Enter Social Club Player ID - + Failed to add Player %1 because Player %1 is already added! @@ -1119,40 +1228,49 @@ Press 1 for Default View Закрыть профиль - + Loading... Загрузка... - + Snapmatic Loader - + <h4>Following Snapmatic Pictures got repaired</h4>%1 - - + + + + Import... Импортировать... - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + Import Импортировать @@ -1161,31 +1279,33 @@ Press 1 for Default View Все файлы профиля (SGTA* PGTA*) - - + + Savegames files (SGTA*) Файлы сохранения (SGTA*) - - + + Snapmatic pictures (PGTA*) Картинка Snapmatic (PGTA*) - - + + + + All files (**) Все файлы (**) - - + + Import file %1 of %2 files Импортируются файлы %1 из %2 - + Import failed with... %1 @@ -1194,14 +1314,14 @@ Press 1 for Default View %1 - - + + Failed to read Snapmatic picture Не удалось загрузить картинку Snapmatic - - + + Failed to read Savegame file Не удалось загрузить файл сохранения @@ -1210,14 +1330,14 @@ Press 1 for Default View Не получилось импортировать %1 из-за неправильного формата файла - - - + + + No valid file is selected Выбранный файл неверен - + Enabled pictures: %1 of %2 Включенные картинки: %1 из %2 @@ -1230,96 +1350,194 @@ Press 1 for Default View Все изображения (*.jpg *.png) - + Importable files (%1) Файлы для импорта (%1) - + + + All image files (%1) Все файлы изображений (%1) - + + + + Can't import %1 because file can't be open + + + + + + Can't import %1 because file can't be parsed properly Не получилось импортировать %1, файл не может быть правильно обработан - + Can't import %1 because file format can't be detected Не получилось импортировать %1, не удалось определить формат файла - + Failed to import the Snapmatic picture, file not begin with PGTA or end with .g5e Не удалось импортировать картинку Snapmatic, название не начинается с PGTA или не заканчивается с .g5e - + Failed to import the Snapmatic picture, the picture is already in the game Не удалось импортировать картинку Snapmatic, картинка уже в игре - + Failed to import the Snapmatic picture, can't copy the file into profile Не удалось импортировать картинку Snapmatic, не получилось скопировать файл в профиль - + Failed to import the Savegame, can't copy the file into profile Не удалось импортировать сохранение, не получилось скопировать файл в профиль - + Failed to import the Savegame, no Savegame slot is left Не удалось импортировать сохранение, нет пустых ячеек под сохранения - - + + JPG pictures and GTA Snapmatic Картинки JPG и GTA Snapmatic - - + + JPG pictures only Только картинки JPG - - + + GTA Snapmatic only Только GTA Snapmatic - + Initialising export... Подготовка к экспорту... - - + + No Snapmatic pictures or Savegames files are selected Не выделены ни один Snapmatic или сохранение - - - + + + Remove selected Снять выделение - + You really want remove the selected Snapmatic picutres and Savegame files? Точно ли хочешь удалить выбранные картинки Snapmatic и файлы сохранений? - + Failed at remove the complete selected Snapmatic pictures and/or Savegame files Не удалось удалить полностью выбранные картинки Snapmatic и/или файлы сохранений + + + + + + + + + + + + Snapmatic Mass Tool + + + + + + + + You don't have any Snapmatics selected! + + + + + + + + Patch selected... + + + + + + + + + + + + Patch file %1 of %2 files + + + + + + + + %1 failed with... + +%2 + Action failed with... + + + + + Qualify + %1 failed with... + + + + + Change Players + %1 failed with... + + + + + Failed to enter a valid Snapmatic Crew ID + + + + + Change Crew + %1 failed with... + + + + + Failed to enter a valid Snapmatic title + + + + + Change Title + %1 failed with... + + Failed to import copy of Snapmatic picture because the file not begin with PGTA Не удалось имортировать копию картинки Snapmatic, т.к. файл не начинается с PGTA @@ -1337,20 +1555,20 @@ Press 1 for Default View Не получилось имортировать копию сохранения, потому что не осталось свободных под них слотов - - - - + + Export selected Экспортировать выделенное - + %1Export Snapmatic pictures%2<br><br>JPG pictures make it possible to open the picture with a Image Viewer<br>GTA Snapmatic make it possible to import the picture into the game<br><br>Export as: %1Эскпортировать картинки Snapmatic%2<br><br>Картинки JPG можно открыть любым просмотрщиком<br>Картинки формата GTA Snapmatic можно снова импортировать в игру<br><br>Экспортировать как: - + + + Export selected... Экпортировать выделенное... @@ -1359,7 +1577,7 @@ Press 1 for Default View Подготавливаю эскпорт... - + Export failed with... %1 @@ -1375,13 +1593,13 @@ Press 1 for Default View Экспортируется файл %1 из %2 - + All profile files (*.g5e SGTA* PGTA*) Все файлы профиля (*.g5e SGTA* PGTA*) - - + + GTA V Export (*.g5e) GTA V Export (*.g5e) @@ -1408,7 +1626,7 @@ Press 1 for Default View SavegameDialog - + Savegame Viewer Просмотрщик сохранений @@ -1436,7 +1654,7 @@ Press 1 for Default View Закрыть - + Failed at %1 Ошибка при %1 @@ -1536,32 +1754,32 @@ Press 1 for Default View Не удалось удалить сохранение %1 - + &View &Просмотр - + &Remove &Удалить - + &Select &Выбрать - + &Deselect Сн&ять выбор - + Select &All В&ыбрать все - + &Deselect All Снять выбо&р со всех @@ -1571,7 +1789,7 @@ Press 1 for Default View Копировать сохранение - + &Export &Экспортировать @@ -1631,13 +1849,13 @@ Press 1 for Default View - - - - - - - + + + + + + + Snapmatic Properties Свойства Snapmatic @@ -1677,7 +1895,7 @@ Press 1 for Default View Значения в Snapmatic - + Crew: %1 (%2) Банда: %1 (%2) @@ -1687,7 +1905,8 @@ Press 1 for Default View Meme - + + Snapmatic Title Заголовок Snapmatic @@ -1697,13 +1916,13 @@ Press 1 for Default View Заголовок: %1 (%2) - + Players: %1 (%2) Multiple Player are inserted here - + Player: %1 (%2) One Player is inserted here @@ -1740,9 +1959,9 @@ Press 1 for Default View &Отмена - + - + Edit Правка @@ -1759,40 +1978,43 @@ Press 1 for Default View Нет - + <h4>Unsaved changes detected</h4>You want to save the JSON content before you quit? - + Patching of Snapmatic Properties failed because of %1 - + Patching of Snapmatic Properties failed because of JSON Error - - - - + + + + Patching of Snapmatic Properties failed because of I/O Error Не удалось измененить свойства Snapmatic из-за проблемы ввода/вывода - + + New Snapmatic title: Новый заголовок Snapmatic: - + + Snapmatic Crew Банда на Snapmatic - + + New Snapmatic crew: Новая банда на Snapmatic: @@ -1846,19 +2068,19 @@ Press 1 for Default View - + JSON is incomplete and malformed - + JSON is incomplete - + JSON is malformed @@ -1903,33 +2125,33 @@ Press 1 for Default View - - + + Delete picture Удалить картинку - + Are you sure to delete %1 from your Snapmatic pictures? Уверены, что хотите удалить %1 из коллекции картинок Snapmatic? - + Failed at deleting %1 from your Snapmatic pictures Не удалось удалить %1 из колелкции картинок Snapmatic - + Edi&t &Правка - + Show &In-game Показывать в &игре - + Hide &In-game Ск&рыть в игре @@ -1938,7 +2160,7 @@ Press 1 for Default View &Изменить свойства... - + &Export &Экспорт @@ -1951,32 +2173,32 @@ Press 1 for Default View Экс&портировать как GTA Snapmatic... - + &View По&казать - + &Remove У&далить - + &Select &Выделить - + &Deselect Сн&ять выделение - + Select &All В&ыбрать все - + &Deselect All Снять выбо&р со всех @@ -2039,75 +2261,89 @@ Press 1 for Default View П&рофиль - + &Exit В&ыход - + Exit Выход - + Close &Profile Закрыть п&рофиль - Ctrl+End - Ctrl+End + Ctrl+End - + &Settings &Настройки - Ctrl+Del - Ctrl+Del + Ctrl+Del - + &Import files... &Импортировать файлы... - Ctrl+I - Ctrl+I + Ctrl+I - - + + Select &GTA V Folder... Выбрать &папку GTA V... - Ctrl+G - Ctrl+G + Ctrl+G - + Show In-gam&e Показывать в и&гре - Shift+E - Shift+E + Shift+E - + Hi&de In-game Скры&ть в игре - Shift+D - Shift+D + Shift+D + + + + Change &Players... + + + + + Change &Title... + + + + + Change &Crew... + + + + + &Qualify as Avatar + @@ -2120,22 +2356,27 @@ Press 1 for Default View В&идимость выделение - + + Selection &mass tools + + + + Select &All В&ыбрать все - + &Deselect All Снять выбо&р со всех - + &Export selected... &Экпортировать выделенное... - + &Remove selected &Удалить выделенное @@ -2152,61 +2393,54 @@ Press 1 for Default View О программе gta5sync - Ctrl+A - Ctrl+A + Ctrl+A Close Закрыть - Ctrl+Q - Ctrl+Q + Ctrl+Q - Ctrl+P - Ctrl+P + Ctrl+P - + &Open File... &Открыть файл... - Ctrl+O - Ctrl+O + Ctrl+O - Ctrl+S - Ctrl+S + Ctrl+S - Ctrl+E - Ctrl+E + Ctrl+E - Ctrl+D - Ctrl+D + Ctrl+D - - + + Select Profile Выбор профиля - - - - + + + + Select GTA V Folder... Выбрать папку GTA V... @@ -2217,27 +2451,27 @@ Press 1 for Default View %2 - %1 - + - + &About %1 &О программе %1 - + Open File... Открыть файл... - - - - + + + + Open File Открыть файл - + Can't open %1 because of not valid file format Не удалось открыть %1 из-за неверного формата файла diff --git a/res/qtbase_en_GB.ts b/res/qtbase_en_GB.ts new file mode 100644 index 0000000..33da638 --- /dev/null +++ b/res/qtbase_en_GB.ts @@ -0,0 +1,16450 @@ + + + + + + + Intro + + + + Introx + + + + + AddDialog + + Add a Contact + + + + + AddTorrentDialog + + Choose a torrent file + + + + Torrents (*.torrent);; All files (*.*) + + + + Choose a destination directory + + + + + AddTorrentFile + + Add a torrent + + + + Select a torrent source + + + + Destination: + + + + Tracker URL: + + + + Browse + + + + File(s): + + + + Size: + + + + Creator: + + + + <none> + + + + Torrent file: + + + + Comment: + + + + 0 + + + + &OK + + + + &Cancel + + + + + AddressBook + + Name: + + + + Address: + + + + Simple Address Book + + + + &Add + + + + &Submit + + + + &Cancel + + + + Empty Field + + + + Please enter a name and address. + + + + Add Successful + + + + "%1" has been added to your address book. + + + + Add Unsuccessful + + + + Sorry, "%1" is already in your address book. + + + + &Next + + + + &Previous + + + + &Edit + + + + &Remove + + + + Edit Successful + + + + "%1" has been edited in your address book. + + + + Edit Unsuccessful + + + + Confirm Remove + + + + Are you sure you want to remove "%1"? + + + + Remove Successful + + + + "%1" has been removed from your address book. + + + + &Find + + + + Contact Not Found + + + + Sorry, "%1" is not in your address book. + + + + &Load... + + + + Load contacts from a file + + + + &Save... + + + + Save contacts to a file + + + + Save Address Book + + + + Address Book (*.abk);;All Files (*) + + + + Unable to open file + + + + Open Address Book + + + + No contacts in file + + + + The file you are attempting to open contains no contacts. + + + + E&xport + + + + Export as vCard + + + + Export Contact + + + + vCard Files (*.vcf);;All Files (*) + + + + Export Successful + + + + "%1" has been exported as a vCard. + + + + + AddressWidget + + Duplicate Name + + + + The name "%1" already exists. + + + + Edit a Contact + + + + Unable to open file + + + + No contacts in file + + + + The file you are attempting to open contains no contacts. + + + + + AnalogClock + + Analog Clock + + + + + ApplicationsTab + + Open with: + + + + Application %1 + + + + Always use this application to open this type of file + + + + Always use this application to open files with the extension '%1' + + + + + BasicToolsPlugin + + Pencil + + + + Air Brush + + + + Random Letters + + + + Circle + + + + Star + + + + Text... + + + + Text Shape + + + + Enter text: + + + + Qt + + + + Invert Pixels + + + + Swap RGB + + + + Grayscale + + + + + BearerMonitor + + BearerMonitor + + + + System State + + + + Online State: + + + + Configurations + + + + Name: + + + + State: + + + + Type: + + + + Invalid + + + + Purpose: + + + + Unknown + + + + Identifier: + + + + Roaming: + + + + Children: + + + + Network Location Awareness + + + + Register + + + + Unregister + + + + New Session + + + + Delete Session + + + + Scan + + + + %p% + + + + 1 + + + + Sessions + + + + Session 1 + + + + Online + + + + Offline + + + + Active + + + + Discovered + + + + Defined + + + + Undefined + + + + Internet Access Point + + + + Service Network + + + + User Choice + + + + Public + + + + Private + + + + Service Specific + + + + Available + + + + Not available + + + + + BlockingClient + + &Server name: + + + + S&erver port: + + + + This examples requires that you run the Fortune Server example as well. + + + + Get Fortune + + + + Quit + + + + Blocking Fortune Client + + + + The host was not found. Please check the host and port settings. + + + + The connection was refused by the peer. Make sure the fortune server is running, and check that the host name and port settings are correct. + + + + The following error occurred: %1. + + + + + BookWindow + + Books + + + + Details + + + + <b>Title:</b> + + + + <b>Author: </b> + + + + <b>Genre:</b> + + + + <b>Year:</b> + + + + <b>Rating:</b> + + + + Author Name + + + + Genre + + + + Title + + + + Year + + + + Rating + + + + + Browser + + Qt SQL Browser + + + + SQL Query + + + + &Clear + + + + &Submit + + + + &Insert Row + + + + Inserts a new Row + + + + &Delete Row + + + + Deletes the current Row + + + + Submit on &Field Change + + + + Commit on Field Change + + + + Submit on &Row Change + + + + Commit on Row Change + + + + Submit &Manually + + + + Commit Manually + + + + &Submit All + + + + Submit Changes + + + + &Revert All + + + + Revert + + + + S&elect + + + + Refresh Data from Database + + + + No database drivers found + + + + This demo requires at least one Qt database driver. Please check the documentation how to build the Qt SQL plugins. + + + + Ready. + + + + Query OK. + + + + Query OK, number of affected rows: %1 + + + + Unable to open database + + + + An error occurred while opening the connection: + + + + About + + + + The SQL Browser demonstration shows how a data browser can be used to visualize the results of SQLstatements on a live database + + + + + Calculator + + . + + + + ± + + + + Backspace + + + + Clear + + + + Clear All + + + + MC + + + + MR + + + + MS + + + + M+ + + + + ÷ + + + + × + + + + - + + + + + + + + + Sqrt + + + + x² + + + + 1/x + + + + = + + + + Calculator + + + + #### + + + + + CertificateInfo + + Display Certificate Information + + + + Certification Path + + + + Certificate Information + + + + %1%2 (%3) + + + + Issued by: + + + + Organization: %1 + + + + Subunit: %1 + + + + Country: %1 + + + + Locality: %1 + + + + State/Province: %1 + + + + Common Name: %1 + + + + Issuer Organization: %1 + + + + Issuer Unit Name: %1 + + + + Issuer Country: %1 + + + + Issuer Locality: %1 + + + + Issuer State/Province: %1 + + + + Issuer Common Name: %1 + + + + + ChatDialog + + Chat + + + + Message: + + + + ! Unknown command: %1 + + + + * %1 has joined + + + + * %1 has left + + + + Launch several instances of this program on your local network and start chatting! + + + + + ChatMainWindow + + Qt D-Bus Chat + + + + Messages sent and received from other users + + + + Message: + + + + Sends a message to other people + + + + Send + + + + Help + + + + File + + + + Quit + + + + Ctrl+Q + + + + About Qt... + + + + Change nickname... + + + + Ctrl+N + + + + + ChipTester + + Chip Example + + + + + ClassInfoPage + + Class Information + + + + Specify basic information about the class for which you want to generate skeleton source code files. + + + + &Class name: + + + + B&ase class: + + + + Generate Q_OBJECT &macro + + + + C&onstructor + + + + &QObject-style constructor + + + + Q&Widget-style constructor + + + + &Default constructor + + + + &Generate copy constructor and operator= + + + + + ClassWizard + + Class Wizard + + + + + Client + + &Server name: + + + + This examples requires that you run the Fortune Server example as well. + + + + Get Fortune + + + + Quit + + + + Fortune Client + + + + The host was not found. Please check the host name and port settings. + + + + The connection was refused by the peer. Make sure the fortune server is running, and check that the host name and port settings are correct. + + + + The following error occurred: %1. + + + + S&erver port: + + + + Opening network session. + + + + + CloseButton + + Close Tab + + + + + CodeStylePage + + Code Style Options + + + + Choose the formatting of the generated code. + + + + &Start generated files with a comment + + + + &Protect header file against multiple inclusions + + + + &Macro name: + + + + &Include base class definition + + + + Base class include: + + + + + ColorDock + + Size Hint: + + + + Min Size Hint: + + + + Max Size: + + + + Dock Widget Max Size: + + + + + ColorSwatch + + Closable + + + + Movable + + + + Floatable + + + + Vertical title bar + + + + Floating + + + + Allow on Left + + + + Allow on Right + + + + Allow on Top + + + + Allow on Bottom + + + + Place on Left + + + + Place on Right + + + + Place on Top + + + + Place on Bottom + + + + Tab into + + + + Split horizontally into + + + + Split vertically into + + + + Modified + + + + Raise + + + + Change Size Hints... + + + + + CompositionWidget + + Composition Modes + + + + Mode + + + + Clear + + + + Source + + + + Destination + + + + Source Over + + + + Destination Over + + + + Source In + + + + Dest In + + + + Source Out + + + + Dest Out + + + + Source Atop + + + + Dest Atop + + + + Xor + + + + Plus + + + + Multiply + + + + Screen + + + + Overlay + + + + Darken + + + + Lighten + + + + Color Dodge + + + + Color Burn + + + + Hard Light + + + + Soft Light + + + + Difference + + + + Exclusion + + + + Circle color + + + + Circle alpha + + + + Show Source + + + + Use OpenGL + + + + What's This? + + + + Animated + + + + + ConclusionPage + + Conclusion + + + + Click %1 to generate the class skeleton. + + + + Complete Your Registration + + + + I agree to the terms of the license + + + + <u>Evaluation License Agreement:</u> You can use this software for 30 days and make one backup, but you are not allowed to distribute it. + + + + <u>First-Time License Agreement:</u> You can use this software subject to the license you will receive by email. + + + + <u>Upgrade License Agreement:</u> This software is licensed under the terms of your current license. + + + + &Print + + + + Print License + + + + As an environmentally friendly measure, the license text will not actually be printed. + + + + + ConfigDialog + + Close + + + + Config Dialog + + + + Configuration + + + + Update + + + + Query + + + + + ConfigurationPage + + Server configuration + + + + Server: + + + + Qt (Australia) + + + + Qt (Germany) + + + + Qt (Norway) + + + + Qt (People's Republic of China) + + + + Qt (USA) + + + + + Connection + + undefined + + + + unknown + + + + + ConnectionWidget + + database + + + + Refresh + + + + Show Schema + + + + + Controller + + Controller + + + + Decelerate + + + + Accelerate + + + + Right + + + + Left + + + + + ControllerWindow + + &Quit + + + + Window Flags + + + + Type + + + + Window + + + + Dialog + + + + Sheet + + + + Drawer + + + + Popup + + + + Tool + + + + Tooltip + + + + Splash screen + + + + Hints + + + + MS Windows fixed size dialog + + + + X11 bypass window manager + + + + Frameless window + + + + No drop shadow + + + + Window title + + + + Window system menu + + + + Window minimize button + + + + Window maximize button + + + + Window close button + + + + Window context help button + + + + Window shade button + + + + Window stays on top + + + + Window stays on bottom + + + + Customize window + + + + + CreateDockWidgetDialog + + Add Dock Widget + + + + Object name: + + + + Location: + + + + Top + + + + Left + + + + Right + + + + Bottom + + + + Restore + + + + + DetailsDialog + + Name: + + + + Address: + + + + Send information about products and special offers + + + + T-shirt + + + + Badge + + + + Reference book + + + + Coffee cup + + + + Incomplete Form + + + + The form does not contain all the necessary information. +Do you want to discard it? + + + + + DetailsPage + + Fill In Your Details + + + + Please fill all three fields. Make sure to provide a valid email address (e.g., tanaka.aya@example.co.jp). + + + + &Company name: + + + + &Email address: + + + + &Postal address: + + + + + Dialog + + Dialog + + + + Load Image From File... + + + + Launch two of these dialogs. In the first, press the top button and load an image from a file. In the second, press the bottom button and display the loaded image from shared memory. + + + + Display Image From Shared Memory + + + + SharedMemory Example + + + + Select an image file + + + + Images (*.png *.xpm *.jpg) + + + + Selected file is not an image, please select another. + + + + Unable to create shared memory segment. + + + + Unable to attach to shared memory segment. +Load an image first. + + + + Unable to detach from shared memory. + + + + Http authentication required + + + + You need to supply a Username and a Password to access this site + + + + Username: + + + + Password: + + + + Site: + + + + %1 at %2 + + + + Client ready + + + + Server ready + + + + &Start + + + + &Quit + + + + Loopback + + + + Unable to start the test: %1. + + + + Listening + + + + Connecting + + + + Accepted connection + + + + Connected + + + + Received %1MB + + + + Sent %1MB + + + + Network error + + + + The following error occurred: %1. + + + + Quit + + + + Threaded Fortune Server + + + + Unable to start the server: %1. + + + + The server is running on + +IP: %1 +port: %2 + +Run the Fortune Client example now. + + + + Add Album + + + + Please provide both the name of the artist and the title of the album. + + + + Artist: + + + + Title: + + + + Year: + + + + Tracks (separated by comma): + + + + &Close + + + + &Revert + + + + &Submit + + + + <p>Message boxes have a caption, a text, and any number of buttons, each with standard or custom texts.<p>Click a button to close the message box. Pressing the Esc button will activate the detected escape button (if any). + + + + If a message box has detailed text, the user can reveal it by pressing the Show Details... button. + + + + Options + + + + QInputDialog::get&Int() + + + + QInputDialog::get&Double() + + + + QInputDialog::getIte&m() + + + + QInputDialog::get&Text() + + + + QInputDialog::get&MultiLineText() + + + + QColorDialog::get&Color() + + + + QFontDialog::get&Font() + + + + QFileDialog::getE&xistingDirectory() + + + + QFileDialog::get&OpenFileName() + + + + QFileDialog::&getOpenFileNames() + + + + QFileDialog::get&SaveFileName() + + + + QMessageBox::critica&l() + + + + QMessageBox::i&nformation() + + + + QMessageBox::&question() + + + + QMessageBox::&warning() + + + + QErrorMessage::showM&essage() + + + + Input Dialogs + + + + Do not use native dialog + + + + Show alpha channel + + + + No buttons + + + + Color Dialog + + + + Show scalable fonts + + + + Show non scalable fonts + + + + Show monospaced fonts + + + + Show proportional fonts + + + + Font Dialog + + + + Show directories only + + + + Do not resolve symlinks + + + + Do not confirm overwrite + + + + Do not use sheet + + + + Readonly + + + + Hide name filter details + + + + Do not use custom directory icons (Windows) + + + + File Dialogs + + + + Message Boxes + + + + QInputDialog::getInteger() + + + + Percentage: + + + + %1% + + + + QInputDialog::getDouble() + + + + Amount: + + + + Spring + + + + Summer + + + + Fall + + + + Winter + + + + QInputDialog::getItem() + + + + Season: + + + + QInputDialog::getText() + + + + User name: + + + + QInputDialog::getMultiLineText() + + + + Address: + + + + QFileDialog::getExistingDirectory() + + + + QFileDialog::getOpenFileName() + + + + All Files (*);;Text Files (*.txt) + + + + QFileDialog::getOpenFileNames() + + + + QFileDialog::getSaveFileName() + + + + QMessageBox::critical() + + + + Abort + + + + Retry + + + + Ignore + + + + QMessageBox::information() + + + + OK + + + + Escape + + + + QMessageBox::question() + + + + Yes + + + + No + + + + Cancel + + + + QMessageBox::warning() + + + + Save &Again + + + + &Continue + + + + Save Again + + + + Continue + + + + This dialog shows and remembers error messages. If the checkbox is checked (as it is by default), the shown message will be shown again, but if the user unchecks the box the message will not appear again if QErrorMessage::showMessage() is called with the same message. + + + + If the box is unchecked, the message won't appear again. + + + + Standard Dialogs + + + + SIP Dialog Example + + + + Open and close the SIP + + + + This dialog resizes if the SIP is opened + + + + Close Dialog + + + + This widget takes up all the remaining space in the top-level layout. + + + + Basic Layouts + + + + &File + + + + E&xit + + + + Horizontal layout + + + + Button %1 + + + + Grid layout + + + + Line %1: + + + + This widget takes up about two thirds of the grid layout. + + + + Form layout + + + + Line 1: + + + + Line 2, long text: + + + + Line 3: + + + + Dynamic Layouts + + + + Dynamic Layouts Help + + + + This example shows how to change layouts dynamically. + + + + Rotable Widgets + + + + Orientation of buttons: + + + + Horizontal + + + + Vertical + + + + Rotate &Widgets + + + + Hello world! + + + + Wiggly + + + + + Dials + + Form + + + + + DigitalClock + + Digital Clock + + + + + DomModel + + Name + + + + Attributes + + + + Value + + + + + DragWidget + + Draggable Text + + + + Fridge Magnets + + + + + DropArea + + <drop content> + + + + Cannot display data + + + + + DropSiteWindow + + This example accepts drags from other applications and displays the MIME types provided by the drag object. + + + + Format + + + + Content + + + + Clear + + + + Quit + + + + Drop Site + + + + + EchoWindow + + Send Message + + + + Message: + + + + Answer: + + + + + EmbeddedDialog + + Embedded Dialog + + + + Layout Direction: + + + + Left to Right + + + + Right to Left + + + + Select Font: + + + + Style: + + + + Layout spacing: + + + + + EvaluatePage + + Evaluate <i>Super Product One</i>&trade; + + + + Please fill both fields. Make sure to provide a valid email address (e.g., john.smith@example.com). + + + + N&ame: + + + + &Email address: + + + + + ExtraFiltersPlugin + + Flip Horizontally + + + + Flip Vertically + + + + Smudge... + + + + Threshold... + + + + Smudge Filter + + + + Enter number of iterations: + + + + Threshold Filter + + + + Enter threshold: + + + + + FadeMessage + + Press me + + + + + FileManager + + Failed to create directory %1 + + + + Failed to open/create file %1: %2 + + + + Failed to resize file %1: %2 + + + + Failed to read from file %1: %2 + + + + Failed to read from file %1 (read %3 bytes): %2 + + + + Failed to write to file %1: %2 + + + + + FilterWidget + + Case Sensitive + + + + + FindDialog + + Find &what: + + + + Match &case + + + + Search from &start + + + + &Find + + + + &More + + + + &Whole words + + + + Search &backward + + + + Search se&lection + + + + Extension + + + + Enter the name of a contact: + + + + Find a Contact + + + + Empty Field + + + + Please enter a name. + + + + + Form + + Form + + + + QFrame { +background-color: #45629a; +} + +QLabel { +color: white; +} + + + + Powered by FlightView + + + + background-color: white; +color: #45629a; + + + + Ready + + + + color: black; +border: 1px solid black; +background: white; +selection-background-color: lightgray; + + + + color: rgb(255, 255, 255); +background-color: rgb(85, 85, 255); +padding: 2px; +border: 2px solid rgb(0, 0, 127); + + + + Search + + + + QFrame { border: 2px solid white; +border-radius: 10px; +margin: 5px; +background-color: rgba(69, 98, 154, 192); } + + + + color: white; +border: none; +background-color: none; + + + + Secure Socket Client + + + + Host name: + + + + www.qt.io + + + + Port: + + + + Active session + + + + Connect to host + + + + Cryptographic Cipher: + + + + <none> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Sans Serif'; font-size:9pt;"></p></body></html> + + + + Input: + + + + &Send + + + + Easing curves + + + + Path type + + + + Line + + + + buttonGroup + + + + Circle + + + + Properties + + + + Period + + + + Overshoot + + + + Amplitude + + + + BackSide + + + + Settings + + + + Title: + + + + Pad Navigator Example + + + + Modified: + + + + Extent + + + + Other input + + + + Widgets On Graphics View + + + + QGraphicsProxyWidget + + + + QGraphicsWidget + + + + QObject + + + + QGraphicsItem + + + + QGraphicsLayoutItem + + + + QGraphicsGridLayout + + + + QGraphicsLayout + + + + QGraphicsLinearLayout + + + + + FortuneServer + + You've been leading a dog's life. Stay off the furniture. + + + + You've got to think about tomorrow. + + + + You will be surprised by a loud noise. + + + + You will feel hungry again in another hour. + + + + You might have mail. + + + + You cannot kill time without injuring eternity. + + + + Computers are not intelligent. They only think they are. + + + + + GeneralTab + + File Name: + + + + Path: + + + + Size: + + + + %1 K + + + + Last Read: + + + + Last Modified: + + + + + GradientWidget + + Gradients + + + + Color Editor + + + + Gradient Type + + + + Linear Gradient + + + + Radial Gradient + + + + Conical Gradient + + + + Spread Method + + + + Pad Spread + + + + Reflect Spread + + + + Repeat Spread + + + + Defaults + + + + 1 + + + + 2 + + + + 3 + + + + Reset + + + + Show Source + + + + Use OpenGL + + + + What's This? + + + + + GraphWidget + + Elastic Nodes + + + + Click and drag the nodes around, and zoom with the mouse wheel or the '+' and '-' keys + + + + + GraphicsView + + Boxes + + + + + HttpWindow + + Please enter the URL of a file you want to download. + + + + + + Download + + + + HTTP + + + + &URL: + + + + &Download directory: + + + + Default &file: + + + + Quit + + + + Downloading %1... + + + + Error + + + + Invalid URL: %1: %2 + + + + Overwrite Existing File + + + + There already exists a file called %1 in the current directory. Overwrite? + + + + Unable to save the file %1: %2. + + + + Download canceled. + + + + Download failed: +%1. + + + + Redirect + + + + Redirect to %1 ? + + + + Downloaded %1 bytes to %2 +in +%3 + + + + %1 at %2 + + + + SSL Errors + + + + One or more SSL errors has occurred: +%1 + + + + + IconPreviewArea + + Normal + + + + Active + + + + Disabled + + + + Selected + + + + Off + + + + On + + + + <b>%1</b> + + + + Size: %1x%2 +Actual size: %3x%4 +Device pixel ratio: %5 + + + + + IconSizeSpinBox + + (\d+)(\s*[xx]\s*\d+)? + + + + %1 x %1 + + + + + ImageComposer + + SourceOver + + + + DestinationOver + + + + Clear + + + + Source + + + + Destination + + + + SourceIn + + + + DestinationIn + + + + SourceOut + + + + DestinationOut + + + + SourceAtop + + + + DestinationAtop + + + + Xor + + + + Plus + + + + Multiply + + + + Screen + + + + Overlay + + + + Darken + + + + Lighten + + + + ColorDodge + + + + ColorBurn + + + + HardLight + + + + SoftLight + + + + Difference + + + + Exclusion + + + + = + + + + Image Composition + + + + Choose Source Image + + + + Choose Destination Image + + + + + ImageViewer + + Cannot load %1: %2 + + + + Opened "%1", %2x%3, Depth: %4 + + + + Cannot write %1: %2 + + + + Wrote "%1" + + + + Open File + + + + Save File As + + + + No image in clipboard + + + + Obtained image from clipboard, %1x%2, Depth: %3 + + + + About Image Viewer + + + + <p>The <b>Image Viewer</b> example shows how to combine QLabel and QScrollArea to display an image. QLabel is typically used for displaying a text, but it can also display an image. QScrollArea provides a scrolling view around another widget. If the child widget exceeds the size of the frame, QScrollArea automatically provides scroll bars. </p><p>The example demonstrates how QLabel's ability to scale its contents (QLabel::scaledContents), and QScrollArea's ability to automatically resize its contents (QScrollArea::widgetResizable), can be used to implement zooming and scaling features. </p><p>In addition the example shows how to use QPainter to print an image.</p> + + + + &File + + + + &Open... + + + + &Save As... + + + + &Print... + + + + E&xit + + + + Ctrl+Q + + + + &Edit + + + + &Copy + + + + &Paste + + + + &View + + + + Zoom &In (25%) + + + + Zoom &Out (25%) + + + + &Normal Size + + + + Ctrl+S + + + + &Fit to Window + + + + Ctrl+F + + + + &Help + + + + &About + + + + About &Qt + + + + Image Viewer + + + + [file] + + + + Image file to open. + + + + + Images + + Image loading and scaling example + + + + Open Images + + + + Cancel + + + + Pause/Resume + + + + Select Images + + + + + InformationWindow + + Item: + + + + Description: + + + + Image file: + + + + &Close + + + + &Revert + + + + &Submit + + + + + IntroPage + + Introduction + + + + This wizard will generate a skeleton C++ class definition, including a few functions. You simply need to specify the class name and set a few options to produce a header file and an implementation file for your new C++ class. + + + + This wizard will help you register your copy of <i>Super Product One</i>&trade; or start evaluating the product. + + + + &Register your copy + + + + &Evaluate the product for 30 days + + + + + ItemDialog + + Items (double click to flip) + + + + Add Qt box + + + + Add circle + + + + Add square + + + + + LicenseWizard + + License Wizard + + + + The decision you make here will affect which page you get to see next. + + + + Make sure to provide a valid email address, such as toni.buddenbrook@example.de. + + + + If you don't provide an upgrade key, you will be asked to fill in your details. + + + + Make sure to provide a valid email address, such as thomas.gradgrind@example.co.uk. + + + + You must accept the terms and conditions of the license to proceed. + + + + This help is likely not to be of any help. + + + + Sorry, I already gave what help I could. Maybe you should try asking a human? + + + + License Wizard Help + + + + + LocationDialog + + Native + + + + INI + + + + User + + + + System + + + + QtProject + + + + Any + + + + Qt Creator + + + + Application Example + + + + Assistant + + + + Designer + + + + Linguist + + + + &Format: + + + + &Scope: + + + + &Organization: + + + + &Application: + + + + Setting Locations + + + + Location + + + + Access + + + + Open Application Settings + + + + Read-write + + + + Read-only + + + + Read-only fallback + + + + + MAC_APPLICATION_MENU + + Services + + + + Hide %1 + + + + Hide Others + + + + Show All + + + + Preferences... + + + + Quit %1 + + + + About %1 + + + + + MainWindow + + Torrent + + + + Peers/Seeds + + + + Progress + + + + Down rate + + + + Up rate + + + + Status + + + + Downloading + + + + Add &new torrent + + + + &Pause torrent + + + + &Remove torrent + + + + &File + + + + E&xit + + + + &Help + + + + &About + + + + About &Qt + + + + Tools + + + + :/icons/1downarrow.png + + + + Move down + + + + :/icons/1uparrow.png + + + + Move up + + + + Rate control + + + + Max download: + + + + 0 KB/s + + + + 99999 KB/s + + + + Max upload: + + + + Torrent Client + + + + Choose a torrent file + + + + Torrents (*.torrent);; All files (*.*) + + + + Error + + + + An error occurred while downloading %0: %1 + + + + Already downloading + + + + The torrent file %1 is already being downloaded. + + + + The torrent file %1 cannot not be opened/resumed. + + + + Torrent: %1<br>Destination: %2 + + + + 0/0 + + + + Idle + + + + Torrent: %1<br>Destination: %2<br>State: %3 + + + + %1/%2 + + + + Resume torrent + + + + Pause torrent + + + + %1 KB/s + + + + About Torrent Client + + + + Disconnecting from trackers + + + + Abort + + + + Music Archive + + + + Artist : %1 +Number of Albums: %2 + + + + Title: %1 (%2) + + + + Delete Album + + + + Are you sure you want to delete '%1' by '%2'? + + + + Select the album you want to delete. + + + + Artist + + + + Album + + + + Details + + + + &Add album... + + + + &Delete album... + + + + &Quit + + + + Ctrl+A + + + + Ctrl+D + + + + About Music Archive + + + + <p>The <b>Music Archive</b> example shows how to present data from different data sources in the same application. The album titles, and the corresponding artists and release dates, are kept in a database, while each album's tracks are stored in an XML file. </p><p>The example also shows how to add as well as remove data from both the database and the associated XML file using the API provided by the Qt SQL and Qt XML modules, respectively.</p> + + + + Finger Paint + + + + Open File + + + + About Scribble + + + + <p>The <b>Scribble</b> example shows how to use QMainWindow as the base widget for an application, and how to reimplement some of QWidget's event handlers to receive the events generated for the application's widgets:</p><p> We reimplement the mouse event handlers to facilitate drawing, the paint event handler to update the application and the resize event handler to optimize the application's appearance. In addition we reimplement the close event handler to intercept the close events before terminating the application.</p><p> The example also demonstrates how to use QPainter to draw an image in real time, as well as to repaint widgets.</p> + + + + &Open... + + + + Ctrl+O + + + + %1... + + + + &Print... + + + + Ctrl+Q + + + + &Clear Screen + + + + Ctrl+L + + + + &Save As + + + + &Options + + + + Scribble + + + + The image has been modified. +Do you want to save your changes? + + + + Save As + + + + %1 Files (*.%2);;All Files (*) + + + + New Game + + + + Quit + + + + Puzzle + + + + Open Image + + + + Image Files (*.png *.jpg *.bmp) + + + + The image file could not be loaded. + + + + Puzzle Completed + + + + Congratulations! You have completed the puzzle! +Click OK to start again. + + + + &Game + + + + &Restart + + + + Chip Example + + + + Diagramscene + + + + Blue Grid + + + + White Grid + + + + Gray Grid + + + + % + + + + About Diagram Scene + + + + The <b>Diagram Scene</b> example shows use of the graphics framework. + + + + Conditional + + + + Process + + + + Input/Output + + + + Text + + + + No Grid + + + + Basic Flowchart Shapes + + + + Backgrounds + + + + Bring to &Front + + + + Ctrl+F + + + + Bring item to front + + + + Send to &Back + + + + Ctrl+T + + + + Send item to back + + + + &Delete + + + + Delete + + + + Delete item from diagram + + + + Quit Scenediagram example + + + + Bold + + + + Ctrl+B + + + + Italic + + + + Ctrl+I + + + + Underline + + + + Ctrl+U + + + + A&bout + + + + F1 + + + + &Item + + + + Edit + + + + Font + + + + Color + + + + 50% + + + + 75% + + + + 100% + + + + 125% + + + + 150% + + + + Pointer type + + + + black + + + + white + + + + red + + + + blue + + + + yellow + + + + Address Book + + + + &Save As... + + + + &Tools + + + + &Add Entry... + + + + &Edit Entry... + + + + &Remove Entry + + + + Chart + + + + Label + + + + Quantity + + + + Choose a data file + + + + Loaded %1 + + + + Save file as + + + + Saved %1 + + + + Editable Tree Model + + + + &Actions + + + + Insert Row + + + + Ctrl+I, R + + + + Remove Row + + + + Ctrl+R, R + + + + Insert Column + + + + Ctrl+I, C + + + + Remove Column + + + + Ctrl+R, C + + + + Insert Child + + + + Ctrl+N + + + + Title + + + + Description + + + + Position: (%1,%2) + + + + Position: (%1,%2) in top level + + + + Pixel size: + + + + Pixelator + + + + Choose an image + + + + %1 - Pixelator + + + + Large Image Size + + + + The printed image may be very large. Are you sure that you want to print it? + + + + Print Image + + + + Printing... + + + + Cancel + + + + Printing canceled + + + + The printing process was canceled. + + + + Printing is not supported on this Qt build + + + + About the Pixelator example + + + + This example demonstrates how a standard view and a custom +delegate can be used to produce a specialized representation +of data in a simple custom model. + + + + Simple DOM Model + + + + XML files (*.xml);;HTML files (*.html);;SVG files (*.svg);;User Interface files (*.ui) + + + + About Application + + + + The <b>Application</b> example demonstrates how to write modern GUI applications using Qt, with a menu bar, toolbars, and a status bar. + + + + File + + + + &New + + + + Create a new file + + + + Open an existing file + + + + &Save + + + + Save the document to disk + + + + Save &As... + + + + Save the document under a new name + + + + Exit the application + + + + &Edit + + + + Cu&t + + + + Cut the current selection's contents to the clipboard + + + + &Copy + + + + Copy the current selection's contents to the clipboard + + + + &Paste + + + + Paste the clipboard's contents into the current selection + + + + Show the application's About box + + + + Show the Qt library's About box + + + + Ready + + + + Application + + + + The document has been modified. +Do you want to save your changes? + + + + Cannot read file %1: +%2. + + + + File loaded + + + + Cannot write file %1: +%2. + + + + File saved + + + + Dock Widgets + + + + Yours sincerely, + + + + Choose a file name + + + + Saved '%1' + + + + About Dock Widgets + + + + The <b>Dock Widgets</b> example demonstrates how to use Qt's dock widgets. You can enter your own text, click a customer to add a customer name and address, and click standard paragraphs to add them. + + + + &New Letter + + + + Create a new form letter + + + + &Save... + + + + Save the current form letter + + + + Print the current form letter + + + + Quit the application + + + + &Undo + + + + Undo the last editing action + + + + &View + + + + Customers + + + + Paragraphs + + + + Status Bar + + + + Save layout... + + + + Load layout... + + + + Switch layout direction + + + + Main window + + + + Animated docks + + + + Allow nested docks + + + + Allow tabbed docks + + + + Force tabbed docks + + + + Vertical tabs + + + + Grouped dragging + + + + Tool bars + + + + Unified + + + + &Dock Widgets + + + + Save layout + + + + Failed to open %1 +%2 + + + + Error writing to %1 +%2 + + + + Load layout + + + + Error reading %1 + + + + Top left corner + + + + Top dock area + + + + Left dock area + + + + Top right corner + + + + Right dock area + + + + Bottom left corner + + + + Bottom dock area + + + + Bottom right corner + + + + Destroy dock widget + + + + Add dock widget... + + + + Failed to restore dock widget + + + + MDI + + + + &%1 %2 + + + + About MDI + + + + The <b>MDI</b> example demonstrates how to write multiple document interface applications using Qt. + + + + %1 %2 + + + + Recent... + + + + &Window + + + + Cl&ose + + + + Close the active window + + + + Close &All + + + + Close all the windows + + + + &Tile + + + + Tile the windows + + + + &Cascade + + + + Cascade the windows + + + + Ne&xt + + + + Move the focus to the next window + + + + Pre&vious + + + + Move the focus to the previous window + + + + <i>Choose a menu option, or right-click to invoke a context menu</i> + + + + A context menu is available by right-clicking + + + + Menus + + + + Invoked <b>File|New</b> + + + + Invoked <b>File|Open</b> + + + + Invoked <b>File|Save</b> + + + + Invoked <b>File|Print</b> + + + + Invoked <b>Edit|Undo</b> + + + + Invoked <b>Edit|Redo</b> + + + + Invoked <b>Edit|Cut</b> + + + + Invoked <b>Edit|Copy</b> + + + + Invoked <b>Edit|Paste</b> + + + + Invoked <b>Edit|Format|Bold</b> + + + + Invoked <b>Edit|Format|Italic</b> + + + + Invoked <b>Edit|Format|Left Align</b> + + + + Invoked <b>Edit|Format|Right Align</b> + + + + Invoked <b>Edit|Format|Justify</b> + + + + Invoked <b>Edit|Format|Center</b> + + + + Invoked <b>Edit|Format|Set Line Spacing</b> + + + + Invoked <b>Edit|Format|Set Paragraph Spacing</b> + + + + Invoked <b>Help|About</b> + + + + About Menu + + + + The <b>Menu</b> example shows how to create menu-bar menus and context menus. + + + + Invoked <b>Help|About Qt</b> + + + + Print the document + + + + Undo the last operation + + + + &Redo + + + + Redo the last operation + + + + &Bold + + + + Make the text bold + + + + &Italic + + + + Make the text italic + + + + Set &Line Spacing... + + + + Change the gap between the lines of a paragraph + + + + Set &Paragraph Spacing... + + + + Change the gap between paragraphs + + + + &Left Align + + + + Left align the selected text + + + + &Right Align + + + + Ctrl+R + + + + Right align the selected text + + + + &Justify + + + + Ctrl+J + + + + Justify the selected text + + + + &Center + + + + Ctrl+E + + + + Center the selected text + + + + &Format + + + + Alignment + + + + About SDI + + + + The <b>SDI</b> example demonstrates how to write single document interface applications using Qt. + + + + &Close + + + + Ctrl+W + + + + Close this window + + + + SDI + + + + document%1.txt + + + + Preparing font samples... + + + + &Cancel + + + + Font Sampler + + + + Date: + + + + Font size: + + + + Calendar for %1 %2 + + + + &New... + + + + Order Form + + + + Date: %1 + + + + I would like to place an order for the following items: + + + + Product + + + + Please update my records to take account of the following privacy information: + + + + I want to receive more information about your company's products and special offers. + + + + I do not want to receive any promotional information from your company. + + + + Sincerely, + + + + Enter Customer Details + + + + Print Document + + + + Syntax Highlighter + + + + About Syntax Highlighter + + + + <p>The <b>Syntax Highlighter</b> example shows how to perform simple syntax highlighting by subclassing the QSyntaxHighlighter class and describing highlighting rules using regular expressions.</p> + + + + Gesture example + + + + Codecs + + + + Cannot read file %1: +%2 + + + + Choose Encoding for %1 + + + + Save As (%1) + + + + Cannot write file %1: +%2 + + + + About Codecs + + + + The <b>Codecs</b> example demonstrates how to read and write files using various encodings. + + + + Model + + + + QFileSytemModel + + + + QFileSytemModel that shows full path + + + + Country list + + + + Word list + + + + Completion Mode + + + + Inline + + + + Filtered Popup + + + + Unfiltered Popup + + + + Case Sensitivity + + + + Case Insensitive + + + + Case Sensitive + + + + Max Visible Items + + + + Wrap around completions + + + + Completer + + + + Exit + + + + About + + + + About Qt + + + + Enter file path + + + + Enter name of your country + + + + Enter a word + + + + This example demonstrates the different features of the QCompleter class. + + + + Plug & Paint + + + + Cannot load %1. + + + + Select brush width: + + + + About Plug & Paint + + + + The <b>Plug & Paint</b> example demonstrates how to write Qt applications that can be extended through plugins. + + + + &Brush Color... + + + + &Brush Width... + + + + About &Plugins + + + + &Brush + + + + &Shapes + + + + &Filter + + + + Open INI File + + + + INI Files (*.ini *.conf) + + + + Open Property List + + + + Property List Files (*.plist) + + + + Open Registry Path + + + + Enter the path in the Windows registry: + + + + About Settings Editor + + + + The <b>Settings Editor</b> example shows how to access application settings using Qt. + + + + &Open Application Settings... + + + + Open I&NI File... + + + + Open Apple &Property List... + + + + Ctrl+P + + + + Open Windows &Registry Path... + + + + Ctrl+G + + + + &Refresh + + + + &Auto-Refresh + + + + &Fallbacks + + + + %1 (read only) + + + + %1 - %2 + + + + Opened "%1" + + + + Tree Model<br>(Double click items to edit) + + + + Tree Separator + + + + Tree Model Completer + + + + This example demonstrates how to use a QCompleter with a custom tree model. + + + + Type path from model above with items at each level separated by a '%1' + + + + Tab 1 + + + + Macros + + + + Help + + + + File actions + + + + Shape actions + + + + Undo Stack + + + + Undo limit + + + + &Open + + + + Red + + + + Green + + + + Blue + + + + Add Rectangle + + + + Add Circle + + + + Remove Shape + + + + Add robot + + + + Add snowan + + + + addTriangle + + + + File error + + + + Failed to open +%1 + + + + Parse error + + + + Failed to parse +%1 + + + + Unnamed + + + + Unsaved changes + + + + Would you like to save this document? + + + + Add snowman + + + + About Undo + + + + The Undo demonstration shows how to use the Qt Undo framework. + + + + Command List + + + + &Delete Item + + + + Del + + + + Add &Box + + + + Add &Triangle + + + + The <b>Undo</b> example demonstrates how to use Qt's undo framework. + + + + Show Font Info + + + + Filter: + + + + All + + + + Scalable + + + + Monospaced + + + + Proportional + + + + Font: + + + + Size: + + + + Style: + + + + Automatic Font Merging: + + + + &To clipboard + + + + Character Map + + + + %n font(s) found + + + + + + + Fonts + + + + Icons + + + + [file] + + + + Icon file(s) to open. + + + + Preview + + + + About Icons + + + + The <b>Icons</b> example illustrates how Qt renders an icon in different modes (active, normal, disabled, and selected) and states (on and off) based on a set of images. + + + + Small (%1 x %1) + + + + Large (%1 x %1) + + + + Toolbars (%1 x %1) + + + + List views (%1 x %1) + + + + Icon views (%1 x %1) + + + + Tab bars (%1 x %1) + + + + Open Images + + + + Directory: %1 +File: %2 +File@2x: %3 +Size: %4x%5 + + + + <None> + + + + Images + + + + Image + + + + Mode + + + + State + + + + Icon Size + + + + Other: + + + + Enter a custom size within %1..%2 + + + + "%1" (%2x%3) + + + + High DPI Scaling + + + + Screen: + + + + Device pixel ratio: + + + + Add &Sample Images... + + + + &Add Images... + + + + &Remove All Images + + + + %1 Style + + + + &Settings + + + + &Guess Image Mode/State + + + + &Use Native File Dialog + + + + Select pen width: + + + + &Pen Color... + + + + Pen &Width... + + + + Style Sheet + + + + Please read the LICENSE file before checking + + + + I accept the terms and &conditions + + + + Profession: + + + + &Name: + + + + Check this if you are male + + + + &Male + + + + &Password: + + + + Specify country of origin + + + + Egypt + + + + France + + + + Germany + + + + India + + + + Italy + + + + Norway + + + + Pakistan + + + + &Age: + + + + Country: + + + + Gender: + + + + Specify your password + + + + Password + + + + Check this if you are female + + + + &Female + + + + Specify your age + + + + Specify your name + + + + Select your profession + + + + Specify your name here + + + + Developer + + + + Student + + + + Fisherman + + + + &Exit + + + + Edit &Style... + + + + About Style sheet + + + + The <b>Style Sheet</b> example shows how widgets can be styled using <a href="http://doc.qt.io/qt-5/stylesheet.html">Qt Style Sheets</a>. Click <b>File|Edit Style Sheet</b> to pop up the style editor, and either choose an existing style sheet or design your own. + + + + Tablet Example + + + + Save Picture + + + + Open Picture + + + + About Tablet Example + + + + This example shows how to use a graphics drawing tablet in Qt. + + + + &Tablet + + + + &Line Width + + + + &Pressure + + + + &Tilt + + + + &Fixed + + + + &Alpha Channel + + + + T&angential Pressure + + + + No Alpha Channel + + + + &Color Saturation + + + + &Vertical Tilt + + + + &Horizontal Tilt + + + + &No Color Saturation + + + + DOM Bookmarks + + + + Open Bookmark File + + + + XBEL Files (*.xbel *.xml) + + + + SAX Bookmarks + + + + Save Bookmark File + + + + About DOM Bookmarks + + + + The <b>DOM Bookmarks</b> example demonstrates how to use Qt's DOM classes to read and write XML documents. + + + + Location + + + + About SAX Bookmarks + + + + The <b>SAX Bookmarks</b> example demonstrates how to use Qt's SAX classes to read XML documents and how to generate XML by hand. + + + + QXmlStream Bookmarks + + + + Parse error in file %1: + +%2 + + + + About QXmlStream Bookmarks + + + + The <b>QXmlStream Bookmarks</b> example demonstrates how to use Qt's QXmlStream classes to read and write XML documents. + + + + Add new + + + + Cannot add new window + + + + Already occupied. Undock first. + + + + + MainWindowBase + + Font Sampler + + + + &Selection + + + + &File + + + + Available Fonts + + + + &Print... + + + + Ctrl+P + + + + E&xit + + + + Ctrl+Q + + + + &Mark + + + + Ctrl+M + + + + &Unmark + + + + Ctrl+U + + + + &Clear + + + + Print Preview... + + + + + MandelbrotWidget + + Mandelbrot + + + + Rendering initial image, please wait... + + + + Use mouse wheel or the '+' and '-' keys to zoom. Press and hold left mouse button to scroll. + + + + + MapZoom + + &Oslo + + + + &Berlin + + + + &Jakarta + + + + Night Mode + + + + About OpenStreetMap + + + + &Options + + + + Light Maps + + + + + MdiChild + + document%1.txt + + + + MDI + + + + Cannot read file %1: +%2. + + + + Save As + + + + Cannot write file %1: +%2. + + + + '%1' has been modified. +Do you want to save your changes? + + + + + MoviePlayer + + No movie loaded + + + + Movie Player + + + + Open a Movie + + + + Fit to Window + + + + Current frame: + + + + Speed: + + + + % + + + + Open File + + + + Play + + + + Pause + + + + Stop + + + + Quit + + + + + NewAddressTab + + There are currently no contacts in your address book. +Click Add to add new contacts. + + + + Add + + + + + NicknameDialog + + Set nickname + + + + New nickname: + + + + OK + + + + Cancel + + + + + Notepad + + Quit + + + + Notepad + + + + Do you really want to quit? + + + + &Load + + + + &Save + + + + E&xit + + + + &File + + + + Open File + + + + Text Files (*.txt);;C++ Files (*.cpp *.h) + + + + Error + + + + Could not open file + + + + Save File + + + + + OutputFilesPage + + Output Files + + + + Specify where you want the wizard to put the generated skeleton code. + + + + &Output directory: + + + + &Header file name: + + + + &Implementation file name: + + + + + PathDeformControls + + Controls + + + + Lens Radius + + + + Deformation + + + + Font Size + + + + Text + + + + Animated + + + + Show Source + + + + Use OpenGL + + + + What's This? + + + + Qt + + + + Lens Radius: + + + + Deformation: + + + + Font Size: + + + + Quit + + + + OK + + + + + PathDeformWidget + + Vector Deformation + + + + + PathStrokeControls + + Cap Style + + + + Flat + + + + Square + + + + Round + + + + Join Style + + + + Bevel + + + + Miter + + + + Pen Style + + + + Custom + + + + Line Style + + + + Curves + + + + Lines + + + + Path Stroking + + + + Pen Width + + + + Animate + + + + Show Source + + + + Use OpenGL + + + + What's This? + + + + OK + + + + Quit + + + + Width: + + + + + PathStrokeWidget + + Path Stroking + + + + + PermissionsTab + + Permissions + + + + Readable + + + + Writable + + + + Executable + + + + Ownership + + + + Owner + + + + Group + + + + + PluginDialog + + OK + + + + Plugin Information + + + + Plug & Paint found the following plugins +(looked in %1): + + + + %1 (Static Plugin) + + + + + PreviewForm + + &Encoding: + + + + Preview + + + + Hex Dump + + + + %1: conversion error at character %2 + + + + %1: %n invalid characters + + + + + + + %1: %n bytes converted + + + + + + + + PreviewWindow + + &Close + + + + Preview + + + + + ProgressDialog + + Download Progress + + + + Downloading %1. + + + + + QAbstractSocket + + Socket operation timed out + + + + Operation on socket is not supported + + + + Host not found + + + + Connection refused + + + + Connection timed out + + + + Trying to connect while connection is in progress + + + + Socket is not connected + + + + Network unreachable + + + + + QAbstractSpinBox + + &Select All + + + + &Step up + + + + Step &down + + + + + QAccessibleActionInterface + + Press + + + + Increase + + + + Decrease + + + + ShowMenu + + + + SetFocus + + + + Toggle + + + + Scroll Left + + + + Scroll Right + + + + Scroll Up + + + + Scroll Down + + + + Previous Page + + + + Next Page + + + + Triggers the action + + + + Increase the value + + + + Decrease the value + + + + Shows the menu + + + + Sets the focus + + + + Toggles the state + + + + Scrolls to the left + + + + Scrolls to the right + + + + Scrolls up + + + + Scrolls down + + + + Goes back a page + + + + Goes to the next page + + + + + QAndroidPlatformTheme + + Yes + + + + Yes to All + + + + No + + + + No to All + + + + + QApplication + + Executable '%1' requires Qt %2, found Qt %3. + + + + Incompatible Qt Library Error + + + + + QCocoaMenuItem + + About Qt + + + + About + + + + Config + + + + Preference + + + + Options + + + + Setting + + + + Setup + + + + Quit + + + + Exit + + + + Cut + + + + Copy + + + + Paste + + + + Select All + + + + + QCocoaTheme + + Don't Save + + + + + QColorDialog + + Hu&e: + + + + &Sat: + + + + &Val: + + + + &Red: + + + + &Green: + + + + Bl&ue: + + + + A&lpha channel: + + + + &HTML: + + + + Cursor at %1, %2 +Press ESC to cancel + + + + Select Color + Select Colour + + + &Basic colors + &Basic colours + + + &Custom colors + &Custom colours + + + &Add to Custom Colors + &Add to Custom Colours + + + &Pick Screen Color + &Pick Screen Colour + + + + QComboBox + + Open the combo box selection popup + + + + False + + + + True + + + + + QCommandLineParser + + Displays version information. + + + + Displays this help. + + + + Unknown option '%1'. + + + + Unknown options: %1. + + + + Missing value after '%1'. + + + + Unexpected value after '%1'. + + + + [options] + + + + Usage: %1 + + + + Options: + + + + Arguments: + + + + + QCoreApplication + + %1: key is empty + QSystemSemaphore + + + + %1: unable to make key + QSystemSemaphore + + + + %1: ftok failed + QSystemSemaphore + + + + + QCupsJobWidget + + Job + + + + Job Control + + + + Scheduled printing: + + + + Billing information: + + + + Job priority: + + + + Banner Pages + + + + End: + Banner page at end + + + + Start: + Banner page at start + + + + Print Immediately + + + + Hold Indefinitely + + + + Day (06:00 to 17:59) + + + + Night (18:00 to 05:59) + + + + Second Shift (16:00 to 23:59) + + + + Third Shift (00:00 to 07:59) + + + + Weekend (Saturday to Sunday) + + + + Specific Time + + + + None + CUPS Banner page + + + + Standard + CUPS Banner page + + + + Unclassified + CUPS Banner page + + + + Confidential + CUPS Banner page + + + + Classified + CUPS Banner page + + + + Secret + CUPS Banner page + + + + Top Secret + CUPS Banner page + + + + + QDB2Driver + + Unable to connect + + + + Unable to commit transaction + + + + Unable to rollback transaction + + + + Unable to set autocommit + + + + + QDB2Result + + Unable to execute statement + + + + Unable to prepare statement + + + + Unable to bind variable + + + + Unable to fetch record %1 + + + + Unable to fetch next + + + + Unable to fetch first + + + + + QDBusTrayIcon + + OK + + + + + QDateTimeParser + + AM + + + + am + + + + PM + + + + pm + + + + + QDialog + + What's This? + + + + + QDialogButtonBox + + OK + + + + + QDirModel + + Name + + + + Size + + + + Kind + Match OS X Finder + + + + Type + All other platforms + + + + Date Modified + + + + + QDnsLookup + + Operation cancelled + + + + + QDnsLookupExample + + DNS Lookup Example + + + + An example demonstrating the class QDnsLookup. + + + + + QDnsLookupRunnable + + IPv6 addresses for nameservers are currently not supported + + + + Invalid domain name + + + + Not yet supported on Android + + + + Resolver functions not found + + + + Resolver initialization failed + + + + Server could not process query + + + + Server failure + + + + Non existent domain + + + + Server refused to answer + + + + Invalid reply received + + + + Could not expand domain name + + + + Invalid IPv4 address record + + + + Invalid IPv6 address record + + + + Invalid canonical name record + + + + Invalid name server record + + + + Invalid pointer record + + + + Invalid mail exchange record + + + + Invalid service record + + + + Invalid text record + + + + Resolver library can't be loaded: No runtime library loading support + + + + No hostname given + + + + Invalid hostname + + + + Host %1 could not be found. + + + + Unknown error + + + + + QDockWidget + + Float + Accessible name for button undocking a dock widget (floating state) + + + + Undocks and re-attaches the dock widget + + + + Close + Accessible name for button closing a dock widget + + + + Closes the dock widget + + + + + QErrorMessage + + Debug Message: + + + + Warning: + + + + Fatal Error: + + + + &Show this message again + + + + &OK + + + + + QFile + + Destination file is the same file. + + + + Source file does not exist. + + + + Destination file exists + + + + Error while renaming. + + + + Unable to restore from %1: %2 + + + + Will not rename sequential file using block copy + + + + Cannot remove source file + + + + Cannot open %1 for input + + + + Cannot open for output + + + + Failure to write block + + + + Cannot create %1 for output + + + + + QFileDevice + + No file engine available or engine does not support UnMapExtension + + + + + QFileDialog + + Look in: + + + + Back + + + + Go back + + + + Alt+Left + + + + Forward + + + + Go forward + + + + Alt+Right + + + + Parent Directory + + + + Go to the parent directory + + + + Alt+Up + + + + Create New Folder + + + + Create a New Folder + + + + List View + + + + Change to list view mode + + + + Detail View + + + + Change to detail view mode + + + + Sidebar + + + + List of places and bookmarks + + + + Files + + + + Files of type: + + + + Find Directory + + + + Open + + + + Save As + + + + Directory: + + + + File &name: + + + + &Open + + + + &Choose + + + + &Save + + + + All Files (*) + + + + Show + + + + &Rename + + + + &Delete + + + + Show &hidden files + + + + &New Folder + + + + All files (*) + + + + Directories + + + + %1 +Directory not found. +Please verify the correct directory name was given. + + + + %1 already exists. +Do you want to replace it? + + + + %1 +File not found. +Please verify the correct file name was given. + + + + New Folder + + + + Delete + + + + '%1' is write protected. +Do you want to delete it anyway? + + + + Are you sure you want to delete '%1'? + + + + Could not delete directory. + + + + Recent Places + + + + Remove + + + + My Computer + + + + Drive + + + + %1 File + %1 is a file name suffix, for example txt + + + + File + + + + File Folder + Match Windows Explorer + + + + Folder + All other platforms + + + + Alias + OS X Finder + + + + Shortcut + All other platforms + + + + Unknown + + + + + QFileSystemModel + + %1 TB + + + + %1 GB + + + + %1 MB + + + + %1 KB + + + + %1 bytes + + + + Invalid filename + + + + <b>The name "%1" can not be used.</b><p>Try using another name, with fewer characters or no punctuations marks. + + + + Name + + + + Size + + + + Kind + Match OS X Finder + + + + Type + All other platforms + + + + Date Modified + + + + My Computer + + + + Computer + + + + %1 byte(s) + + + + + QFontDatabase + + Normal + The Normal or Regular font weight + + + + Bold + + + + Demi Bold + + + + Medium + The Medium font weight + + + + Black + + + + Light + + + + Thin + + + + Extra Light + + + + Extra Bold + + + + Extra + The word for "Extra" as in "Extra Bold, Extra Thin" used as a pattern for string searches + + + + Demi + The word for "Demi" as in "Demi Bold" used as a pattern for string searches + + + + Italic + + + + Oblique + + + + Any + + + + Latin + + + + Greek + + + + Cyrillic + + + + Armenian + + + + Hebrew + + + + Arabic + + + + Syriac + + + + Thaana + + + + Devanagari + + + + Bengali + + + + Gurmukhi + + + + Gujarati + + + + Oriya + + + + Tamil + + + + Telugu + + + + Kannada + + + + Malayalam + + + + Sinhala + + + + Thai + + + + Lao + + + + Tibetan + + + + Myanmar + + + + Georgian + + + + Khmer + + + + Simplified Chinese + + + + Traditional Chinese + + + + Japanese + + + + Korean + + + + Vietnamese + + + + Symbol + + + + Ogham + + + + Runic + + + + N'Ko + + + + + QFontDialog + + Select Font + + + + &Font + + + + Font st&yle + + + + &Size + + + + Effects + + + + Stri&keout + + + + &Underline + + + + Sample + + + + Wr&iting System + + + + + QFtp + + Not connected + + + + Host %1 not found + + + + Connection refused to host %1 + + + + Connection timed out to host %1 + + + + Connected to host %1 + + + + Data Connection refused + + + + Unknown error + + + + Connecting to host failed: +%1 + + + + Login failed: +%1 + + + + Listing directory failed: +%1 + + + + Changing directory failed: +%1 + + + + Downloading file failed: +%1 + + + + Uploading file failed: +%1 + + + + Removing file failed: +%1 + + + + Creating directory failed: +%1 + + + + Removing directory failed: +%1 + + + + Connection closed + + + + + QGnomeTheme + + &OK + + + + &Save + + + + &Cancel + + + + &Close + + + + Close without Saving + + + + + QGuiApplication + + QT_LAYOUT_DIRECTION + Translate this string to the string 'LTR' in left-to-right languages or to 'RTL' in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout. + + + + + QHostInfo + + No host name given + + + + Unknown error + + + + + QHostInfoAgent + + No host name given + + + + Invalid hostname + + + + Unknown address type + + + + Host not found + + + + Unknown error + + + + Unknown error (%1) + + + + + QHttp + + Host %1 not found + + + + Connection refused + + + + Connection closed + + + + Proxy requires authentication + + + + Host requires authentication + + + + Data corrupted + + + + Unknown protocol specified + + + + SSL handshake failed + + + + Too many redirects + + + + Insecure redirect + + + + + QHttpSocketEngine + + Did not receive HTTP response from proxy + + + + Error parsing authentication request from proxy + + + + Authentication required + + + + Proxy denied connection + + + + Error communicating with HTTP proxy + + + + Proxy server not found + + + + Proxy connection refused + + + + Proxy server connection timed out + + + + Proxy connection closed prematurely + + + + + QIBaseDriver + + Error opening database + + + + Could not start transaction + + + + Unable to commit transaction + + + + Unable to rollback transaction + + + + + QIBaseResult + + Unable to create BLOB + + + + Unable to write BLOB + + + + Unable to open BLOB + + + + Unable to read BLOB + + + + Could not find array + + + + Could not get array data + + + + Could not get query info + + + + Could not start transaction + + + + Unable to commit transaction + + + + Could not allocate statement + + + + Could not prepare statement + + + + Could not describe input statement + + + + Could not describe statement + + + + Unable to close statement + + + + Unable to execute query + + + + Could not fetch next item + + + + Could not get statement info + + + + + QIODevice + + Permission denied + + + + Too many open files + + + + No such file or directory + + + + No space left on device + + + + file to open is a directory + + + + Unknown error + + + + + QImageReader + + Invalid device + + + + File not found + + + + Unsupported image format + + + + Unable to read image data + + + + Unknown error + + + + + QImageWriter + + Unknown error + + + + Device is not set + + + + Device not writable + + + + Unsupported image format + + + + + QInputDialog + + Enter a value: + + + + + QJsonParseError + + no error occurred + + + + unterminated object + + + + missing name separator + + + + unterminated array + + + + missing value separator + + + + illegal value + + + + invalid termination by number + + + + illegal number + + + + invalid escape sequence + + + + invalid UTF8 string + + + + unterminated string + + + + object is missing after a comma + + + + too deeply nested document + + + + too large document + + + + garbage at the end of the document + + + + + QKeySequenceEdit + + Press shortcut + + + + %1, ... + This text is an "unfinished" shortcut, expands like "Ctrl+A, ..." + + + + + QLibrary + + '%1' is not an ELF object (%2) + + + + '%1' is not an ELF object + + + + '%1' is an invalid ELF object (%2) + + + + Failed to extract plugin meta data from '%1' + + + + The shared library was not found. + + + + The file '%1' is not a valid Qt plugin. + + + + The plugin '%1' uses incompatible Qt library. (%2.%3.%4) [%5] + + + + The plugin '%1' uses incompatible Qt library. (Cannot mix debug and release libraries.) + + + + Unknown error + + + + Cannot load library %1: %2 + + + + Cannot unload library %1: %2 + + + + Cannot resolve symbol "%1" in %2: %3 + + + + '%1' is not a valid Mach-O binary (%2) + + + + file is corrupt + + + + file too small + + + + no suitable architecture in fat binary + + + + invalid magic %1 + + + + wrong architecture + + + + not a dynamic library + + + + '%1' is not a Qt plugin + + + + + QLineEdit + + &Undo + + + + &Redo + + + + Cu&t + + + + &Copy + + + + &Paste + + + + Delete + + + + Select All + + + + + QLocalServer + + %1: Name error + + + + %1: Permission denied + + + + %1: Address in use + + + + %1: Unknown error %2 + + + + + QLocalSocket + + %1: Connection refused + + + + %1: Remote closed + + + + %1: Invalid name + + + + %1: Socket access error + + + + %1: Socket resource error + + + + %1: Socket operation timed out + + + + %1: Datagram too large + + + + %1: Connection error + + + + %1: The socket operation is not supported + + + + %1: Operation not permitted when socket is in this state + + + + %1: Unknown error + + + + Trying to connect while connection is in progress + + + + %1: Unknown error %2 + + + + %1: Access denied + + + + + QMYSQLDriver + + Unable to allocate a MYSQL object + + + + Unable to open database '%1' + + + + Unable to connect + + + + Unable to begin transaction + + + + Unable to commit transaction + + + + Unable to rollback transaction + + + + + QMYSQLResult + + Unable to fetch data + + + + Unable to execute query + + + + Unable to store result + + + + Unable to execute next query + + + + Unable to store next result + + + + Unable to prepare statement + + + + Unable to reset statement + + + + Unable to bind value + + + + Unable to execute statement + + + + Unable to bind outvalues + + + + Unable to store statement results + + + + + QMdiArea + + (Untitled) + + + + + QMdiSubWindow + + - [%1] + + + + %1 - [%2] + + + + Minimize + + + + Maximize + + + + Unshade + + + + Shade + + + + Restore Down + + + + Restore + + + + Close + + + + Help + + + + Menu + + + + &Restore + + + + &Move + + + + &Size + + + + Mi&nimize + + + + Ma&ximize + + + + Stay on &Top + + + + &Close + + + + + QMessageBox + + Show Details... + + + + Hide Details... + + + + OK + + + + Help + + + + <h3>About Qt</h3><p>This program uses Qt version %1.</p> + + + + <p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across all major desktop operating systems. It is also available for embedded Linux and other embedded and mobile operating systems.</p><p>Qt is available under three different licensing options designed to accommodate the needs of our various users.</p><p>Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 3 or GNU LGPL version 2.1.</p><p>Qt licensed under the GNU LGPL version 3 is appropriate for the development of Qt&nbsp;applications provided you can comply with the terms and conditions of the GNU LGPL version 3.</p><p>Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt&nbsp;applications provided you can comply with the terms and conditions of the GNU LGPL version 2.1.</p><p>Please see <a href="http://%2/">%2</a> for an overview of Qt licensing.</p><p>Copyright (C) %1 The Qt Company Ltd and other contributors.</p><p>Qt and the Qt logo are trademarks of The Qt Company Ltd.</p><p>Qt is The Qt Company Ltd product developed as an open source project. See <a href="http://%3/">%3</a> for more information.</p> + + + + About Qt + + + + + QNativeSocketEngine + + Unable to initialize non-blocking socket + + + + Unable to initialize broadcast socket + + + + Attempt to use IPv6 socket on a platform with no IPv6 support + + + + The remote host closed the connection + + + + Network operation timed out + + + + Out of resources + + + + Unsupported socket operation + + + + Protocol type not supported + + + + Invalid socket descriptor + + + + Host unreachable + + + + Network unreachable + + + + Permission denied + + + + Connection timed out + + + + Connection refused + + + + The bound address is already in use + + + + The address is not available + + + + The address is protected + + + + Datagram was too large to send + + + + Unable to send a message + + + + Unable to receive a message + + + + Unable to write + + + + Network error + + + + Another socket is already listening on the same port + + + + Operation on non-socket + + + + The proxy type is invalid for this operation + + + + Temporary error + + + + Network dropped connection on reset + + + + Connection reset by peer + + + + Unknown error + + + + + QNetworkAccessCacheBackend + + Error opening %1 + + + + + QNetworkAccessDataBackend + + Invalid URI: %1 + + + + + QNetworkAccessDebugPipeBackend + + Write error writing to %1: %2 + + + + Socket error on %1: %2 + + + + Remote host closed the connection prematurely on %1 + + + + + QNetworkAccessFileBackend + + Request for opening non-local file %1 + + + + Error opening %1: %2 + + + + Write error writing to %1: %2 + + + + Cannot open %1: Path is a directory + + + + Read error reading from %1: %2 + + + + + QNetworkAccessFtpBackend + + No suitable proxy found + + + + Cannot open %1: is a directory + + + + Logging in to %1 failed: authentication required + + + + Error while downloading %1: %2 + + + + Error while uploading %1: %2 + + + + + QNetworkAccessManager + + Network access is disabled. + + + + + QNetworkReply + + Error transferring %1 - server replied: %2 + + + + Background request not allowed. + + + + Network session error. + + + + backend start error. + + + + Temporary network failure. + + + + Protocol "%1" is unknown + + + + + QNetworkReplyHttpImpl + + Operation canceled + + + + No suitable proxy found + + + + + QNetworkReplyImpl + + Operation canceled + + + + + QNetworkSession + + Invalid configuration. + + + + + QNetworkSessionPrivateImpl + + Unknown session error. + + + + The session was aborted by the user or system. + + + + The requested operation is not supported by the system. + + + + The specified configuration cannot be used. + + + + Roaming was aborted or is not possible. + + + + + QOCIDriver + + Unable to initialize + QOCIDriver + + + + Unable to logon + + + + Unable to begin transaction + + + + Unable to commit transaction + + + + Unable to rollback transaction + + + + + QOCIResult + + Unable to bind column for batch execute + + + + Unable to execute batch statement + + + + Unable to goto next + + + + Unable to alloc statement + + + + Unable to prepare statement + + + + Unable to get statement type + + + + Unable to bind value + + + + Unable to execute statement + + + + + QODBCDriver + + Unable to connect + + + + Unable to connect - Driver doesn't support all functionality required + + + + Unable to disable autocommit + + + + Unable to commit transaction + + + + Unable to rollback transaction + + + + Unable to enable autocommit + + + + + QODBCResult + + Unable to fetch last + + + + QODBCResult::reset: Unable to set 'SQL_CURSOR_STATIC' as statement attribute. Please check your ODBC driver configuration + + + + Unable to execute statement + + + + Unable to fetch + + + + Unable to fetch next + + + + Unable to fetch first + + + + Unable to fetch previous + + + + Unable to prepare statement + + + + Unable to bind variable + + + + + QObject + + ID + + + + Name + + + + City + + + + Country + + + + Relational Table Model + + + + First name + + + + Last name + + + + Plain Query Model + + + + Editable Query Model + + + + Custom Query Model + + + + Table Model (View 1) + + + + Table Model (View 2) + + + + Qt SQL Browser + + + + &File + + + + Add &Connection... + + + + &Quit + + + + &Help + + + + About + + + + About Qt + + + + Systray + + + + I couldn't detect any system tray on this system. + + + + Simple Wizard + + + + Cannot write file %1: +%2 + + + + Draggable Icons + + + + Invalid enum. + + + + Invalid value. + + + + Invalid operation. + + + + Stack overflow. + + + + Stack underflow. + + + + Out of memory. + + + + Unknown error. + + + + Subject + + + + Sender + + + + Date + + + + Dir View + + + + Frozen Column Example + + + + Simple Tree Model + + + + Spin Box Delegate + + + + Add %1 + + + + Remove %1 + + + + Set %1's color + + + + Change %1's geometry + + + + Move %1 + + + + Delete %1 + + + + %1 at (%2, %3) + + + + Code Editor Example + + + + Folder + + + + The file is not an XBEL file. + + + + The file is not an XBEL version 1.0 file. + + + + Unknown title + + + + SAX Bookmarks + + + + Parse error at line %1, column %2: +%3 + + + + %1 +Line %2, column %3 + + + + + QPSQLDriver + + Unable to connect + + + + Could not begin transaction + + + + Could not commit transaction + + + + Could not rollback transaction + + + + Unable to subscribe + + + + Unable to unsubscribe + + + + + QPSQLResult + + Unable to create query + + + + Unable to prepare statement + + + + + QPageSetupWidget + + Form + + + + Paper + + + + Page size: + + + + Width: + + + + Height: + + + + Paper source: + + + + Orientation + + + + Portrait + + + + Landscape + + + + Reverse landscape + + + + Reverse portrait + + + + Margins + + + + top margin + + + + left margin + + + + right margin + + + + bottom margin + + + + Page Layout + + + + Page order: + + + + Pages per sheet: + + + + Millimeters (mm) + + + + Inches (in) + + + + Points (pt) + + + + Pica (P̸) + + + + Didot (DD) + + + + Cicero (CC) + + + + Custom + + + + mm + Unit 'Millimeter' + + + + pt + Unit 'Points' + + + + in + Unit 'Inch' + + + + P̸ + Unit 'Pica' + + + + DD + Unit 'Didot' + + + + CC + Unit 'Cicero' + + + + + QPageSize + + Custom (%1mm x %2mm) + Custom size name in millimeters + + + + Custom (%1pt x %2pt) + Custom size name in points + + + + Custom (%1in x %2in) + Custom size name in inches + + + + Custom (%1pc x %2pc) + Custom size name in picas + + + + Custom (%1DD x %2DD) + Custom size name in didots + + + + Custom (%1CC x %2CC) + Custom size name in ciceros + + + + %1 x %2 in + Page size in 'Inch'. + + + + A0 + + + + A1 + + + + A2 + + + + A3 + + + + A4 + + + + A5 + + + + A6 + + + + A7 + + + + A8 + + + + A9 + + + + A10 + + + + B0 + + + + B1 + + + + B2 + + + + B3 + + + + B4 + + + + B5 + + + + B6 + + + + B7 + + + + B8 + + + + B9 + + + + B10 + + + + Executive (7.5 x 10 in) + + + + Executive (7.25 x 10.5 in) + + + + Folio (8.27 x 13 in) + + + + Legal + + + + Letter / ANSI A + + + + Tabloid / ANSI B + + + + Ledger / ANSI B + + + + Custom + + + + A3 Extra + + + + A4 Extra + + + + A4 Plus + + + + A4 Small + + + + A5 Extra + + + + B5 Extra + + + + JIS B0 + + + + JIS B1 + + + + JIS B2 + + + + JIS B3 + + + + JIS B4 + + + + JIS B5 + + + + JIS B6 + + + + JIS B7 + + + + JIS B8 + + + + JIS B9 + + + + JIS B10 + + + + ANSI C + + + + ANSI D + + + + ANSI E + + + + Legal Extra + + + + Letter Extra + + + + Letter Plus + + + + Letter Small + + + + Tabloid Extra + + + + Architect A + + + + Architect B + + + + Architect C + + + + Architect D + + + + Architect E + + + + Note + + + + Quarto + + + + Statement + + + + Super A + + + + Super B + + + + Postcard + + + + Double Postcard + + + + PRC 16K + + + + PRC 32K + + + + PRC 32K Big + + + + Fan-fold US (14.875 x 11 in) + + + + Fan-fold German (8.5 x 12 in) + + + + Fan-fold German Legal (8.5 x 13 in) + + + + Envelope B4 + + + + Envelope B5 + + + + Envelope B6 + + + + Envelope C0 + + + + Envelope C1 + + + + Envelope C2 + + + + Envelope C3 + + + + Envelope C4 + + + + Envelope C5 + + + + Envelope C6 + + + + Envelope C65 + + + + Envelope C7 + + + + Envelope DL + + + + Envelope US 9 + + + + Envelope US 10 + + + + Envelope US 11 + + + + Envelope US 12 + + + + Envelope US 14 + + + + Envelope Monarch + + + + Envelope Personal + + + + Envelope Chou 3 + + + + Envelope Chou 4 + + + + Envelope Invite + + + + Envelope Italian + + + + Envelope Kaku 2 + + + + Envelope Kaku 3 + + + + Envelope PRC 1 + + + + Envelope PRC 2 + + + + Envelope PRC 3 + + + + Envelope PRC 4 + + + + Envelope PRC 5 + + + + Envelope PRC 6 + + + + Envelope PRC 7 + + + + Envelope PRC 8 + + + + Envelope PRC 9 + + + + Envelope PRC 10 + + + + Envelope You 4 + + + + + QPlatformTheme + + OK + + + + Save + + + + Save All + + + + Open + + + + &Yes + + + + Yes to &All + + + + &No + + + + N&o to All + + + + Abort + + + + Retry + + + + Ignore + + + + Close + + + + Cancel + + + + Discard + + + + Help + + + + Apply + + + + Reset + + + + Restore Defaults + + + + + QPluginLoader + + The plugin was not loaded. + + + + Unknown error + + + + + QPrintDialog + + Print + + + + Left to Right, Top to Bottom + + + + Left to Right, Bottom to Top + + + + Right to Left, Bottom to Top + + + + Right to Left, Top to Bottom + + + + Bottom to Top, Left to Right + + + + Bottom to Top, Right to Left + + + + Top to Bottom, Left to Right + + + + Top to Bottom, Right to Left + + + + 1 (1x1) + + + + 2 (2x1) + + + + 4 (2x2) + + + + 6 (2x3) + + + + 9 (3x3) + + + + 16 (4x4) + + + + All Pages + + + + Odd Pages + + + + Even Pages + + + + &Options >> + + + + &Print + + + + &Options << + + + + Print to File (PDF) + + + + Local file + + + + Write PDF file + + + + Print To File ... + + + + %1 is a directory. +Please choose a different file name. + + + + File %1 is not writable. +Please choose a different file name. + + + + %1 already exists. +Do you want to overwrite it? + + + + Options 'Pages Per Sheet' and 'Page Set' cannot be used together. +Please turn one of those options off. + + + + The 'From' value cannot be greater than the 'To' value. + + + + OK + + + + Automatic + + + + + QPrintPreviewDialog + + Page Setup + + + + %1% + + + + Print Preview + + + + Next page + + + + Previous page + + + + First page + + + + Last page + + + + Fit width + + + + Fit page + + + + Zoom in + + + + Zoom out + + + + Portrait + + + + Landscape + + + + Show single page + + + + Show facing pages + + + + Show overview of all pages + + + + Print + + + + Page setup + + + + Export to PDF + + + + + QPrintPropertiesDialog + + Printer Properties + + + + Job Options + + + + + QPrintPropertiesWidget + + Form + + + + Page + + + + + QPrintSettingsOutput + + Form + + + + Copies + + + + Print range + + + + Print all + + + + Pages from + + + + to + + + + Current Page + + + + Selection + + + + Page Set: + + + + Output Settings + + + + Copies: + + + + Collate + + + + Reverse + + + + Options + + + + Color Mode + + + + Color + + + + Grayscale + + + + Duplex Printing + + + + None + + + + Long side + + + + Short side + + + + + QPrintWidget + + Form + + + + Printer + + + + &Name: + + + + P&roperties + + + + Location: + + + + Preview + + + + Type: + + + + Output &file: + + + + ... + + + + + QProcess + + Process failed to start + + + + Process crashed + + + + Process operation timed out + + + + Error reading from process + + + + Error writing to process + + + + No program defined + + + + Could not open input redirection for reading + + + + Resource error (fork failure): %1 + + + + Could not open output redirection for writing + + + + Process failed to start: %1 + + + + + QProgressDialog + + Cancel + + + + + QPushButton + + Hello world! + + + + Hello %n world(s)! + + + + + + + It's a small world + + + + + QQnxFileDialogHelper + + All files (*.*) + + + + + QQnxFilePicker + + Pick a file + + + + + QRegExp + + no error occurred + + + + disabled feature used + + + + bad char class syntax + + + + bad lookahead syntax + + + + lookbehinds not supported, see QTBUG-2371 + + + + bad repetition syntax + + + + invalid octal value + + + + missing left delim + + + + unexpected end + + + + met internal limit + + + + invalid interval + + + + invalid category + + + + + QRegularExpression + + no error + + + + \ at end of pattern + + + + \c at end of pattern + + + + unrecognized character follows \ + + + + numbers out of order in {} quantifier + + + + number too big in {} quantifier + + + + missing terminating ] for character class + + + + invalid escape sequence in character class + + + + range out of order in character class + + + + nothing to repeat + + + + internal error: unexpected repeat + + + + unrecognized character after (? or (?- + + + + POSIX named classes are supported only within a class + + + + missing ) + + + + reference to non-existent subpattern + + + + erroffset passed as NULL + + + + unknown option bit(s) set + + + + missing ) after comment + + + + regular expression is too large + + + + failed to get memory + + + + unmatched parentheses + + + + internal error: code overflow + + + + unrecognized character after (?< + + + + lookbehind assertion is not fixed length + + + + malformed number or name after (?( + + + + conditional group contains more than two branches + + + + assertion expected after (?( + + + + (?R or (?[+-]digits must be followed by ) + + + + unknown POSIX class name + + + + POSIX collating elements are not supported + + + + this version of PCRE is not compiled with PCRE_UTF8 support + + + + character value in \x{...} sequence is too large + + + + invalid condition (?(0) + + + + \C not allowed in lookbehind assertion + + + + PCRE does not support \L, \l, \N{name}, \U, or \u + + + + number after (?C is > 255 + + + + closing ) for (?C expected + + + + recursive call could loop indefinitely + + + + unrecognized character after (?P + + + + syntax error in subpattern name (missing terminator) + + + + two named subpatterns have the same name + + + + invalid UTF-8 string + + + + support for \P, \p, and \X has not been compiled + + + + malformed \P or \p sequence + + + + unknown property name after \P or \p + + + + subpattern name is too long (maximum 32 characters) + + + + too many named subpatterns (maximum 10000) + + + + octal value is greater than \377 (not in UTF-8 mode) + + + + internal error: overran compiling workspace + + + + internal error: previously-checked referenced subpattern not found + + + + DEFINE group contains more than one branch + + + + repeating a DEFINE group is not allowed + + + + inconsistent NEWLINE options + + + + \g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number + + + + a numbered reference must not be zero + + + + an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT) + + + + (*VERB) not recognized + + + + number is too big + + + + subpattern name expected + + + + digit expected after (?+ + + + + ] is an invalid data character in JavaScript compatibility mode + + + + different names for subpatterns of the same number are not allowed + + + + (*MARK) must have an argument + + + + this version of PCRE is not compiled with PCRE_UCP support + + + + \c must be followed by an ASCII character + + + + \k is not followed by a braced, angle-bracketed, or quoted name + + + + internal error: unknown opcode in find_fixedlength() + + + + \N is not supported in a class + + + + too many forward references + + + + disallowed Unicode code point (>= 0xd800 && <= 0xdfff) + + + + invalid UTF-16 string + + + + name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN) + + + + character value in \u.... sequence is too large + + + + invalid UTF-32 string + + + + setting UTF is disabled by the application + + + + non-hex character in \x{} (closing brace missing?) + + + + non-octal character in \o{} (closing brace missing?) + + + + missing opening brace after \o + + + + parentheses are too deeply nested + + + + invalid range in character class + + + + group name must start with a non-digit + + + + parentheses are too deeply nested (stack check) + + + + digits missing in \x{} or \o{} + + + + + QSQLite2Driver + + Error opening database + + + + Unable to begin transaction + + + + Unable to commit transaction + + + + Unable to rollback transaction + + + + + QSQLite2Result + + Unable to fetch results + + + + Unable to execute statement + + + + + QSQLiteDriver + + Error opening database + + + + Error closing database + + + + Unable to begin transaction + + + + Unable to commit transaction + + + + Unable to rollback transaction + + + + + QSQLiteResult + + Unable to fetch row + + + + No query + + + + Unable to execute statement + + + + Unable to execute multiple statements at a time + + + + Unable to reset statement + + + + Unable to bind parameters + + + + Parameter count mismatch + + + + + QSaveFile + + Existing file %1 is not writable + + + + Filename refers to a directory + + + + Writing canceled by application + + + + + QScrollBar + + Scroll here + + + + Left edge + + + + Top + + + + Right edge + + + + Bottom + + + + Page left + + + + Page up + + + + Page right + + + + Page down + + + + Scroll left + + + + Scroll up + + + + Scroll right + + + + Scroll down + + + + + QSharedMemory + + %1: unable to set key on lock + + + + %1: create size is less then 0 + + + + %1: unable to lock + + + + %1: unable to unlock + + + + %1: key is empty + + + + %1: bad name + + + + %1: UNIX key file doesn't exist + + + + %1: ftok failed + + + + %1: unable to make key + + + + %1: system-imposed size restrictions + + + + %1: not attached + + + + %1: permission denied + + + + %1: already exists + + + + %1: doesn't exist + + + + %1: out of resources + + + + %1: unknown error %2 + + + + %1: invalid size + + + + %1: key error + + + + %1: size query failed + + + + + QShortcut + + Space + This and all following "incomprehensible" strings in QShortcut context are key names. Please use the localized names appearing on actual keyboards or whatever is commonly used. + + + + Esc + + + + Tab + + + + Backtab + + + + Backspace + + + + Return + + + + Enter + + + + Ins + + + + Del + + + + Pause + + + + Print + + + + SysReq + + + + Home + + + + End + + + + Left + + + + Up + + + + Right + + + + Down + + + + PgUp + + + + PgDown + + + + CapsLock + + + + NumLock + + + + ScrollLock + + + + Menu + + + + Help + + + + Back + + + + Forward + + + + Stop + + + + Refresh + + + + Volume Down + + + + Volume Mute + + + + Volume Up + + + + Bass Boost + + + + Bass Up + + + + Bass Down + + + + Treble Up + + + + Treble Down + + + + Media Play + + + + Media Stop + + + + Media Previous + + + + Media Next + + + + Media Record + + + + Media Pause + Media player pause button + + + + Toggle Media Play/Pause + Media player button to toggle between playing and paused + + + + Home Page + + + + Favorites + + + + Search + + + + Standby + + + + Open URL + + + + Launch Mail + + + + Launch Media + + + + Launch (0) + + + + Launch (1) + + + + Launch (2) + + + + Launch (3) + + + + Launch (4) + + + + Launch (5) + + + + Launch (6) + + + + Launch (7) + + + + Launch (8) + + + + Launch (9) + + + + Launch (A) + + + + Launch (B) + + + + Launch (C) + + + + Launch (D) + + + + Launch (E) + + + + Launch (F) + + + + Monitor Brightness Up + + + + Monitor Brightness Down + + + + Keyboard Light On/Off + + + + Keyboard Brightness Up + + + + Keyboard Brightness Down + + + + Power Off + + + + Wake Up + + + + Eject + + + + Screensaver + + + + WWW + + + + Sleep + + + + LightBulb + + + + Shop + + + + History + + + + Add Favorite + + + + Hot Links + + + + Adjust Brightness + + + + Finance + + + + Community + + + + Media Rewind + + + + Back Forward + + + + Application Left + + + + Application Right + + + + Book + + + + CD + + + + Calculator + + + + Clear + + + + Clear Grab + + + + Close + + + + Copy + + + + Cut + + + + Display + + + + DOS + + + + Documents + + + + Spreadsheet + + + + Browser + + + + Game + + + + Go + + + + iTouch + + + + Logoff + + + + Market + + + + Meeting + + + + Keyboard Menu + + + + Menu PB + + + + My Sites + + + + News + + + + Home Office + + + + Option + + + + Paste + + + + Phone + + + + Reply + + + + Reload + + + + Rotate Windows + + + + Rotation PB + + + + Rotation KB + + + + Save + + + + Send + + + + Spellchecker + + + + Split Screen + + + + Support + + + + Task Panel + + + + Terminal + + + + Tools + + + + Travel + + + + Video + + + + Word Processor + + + + XFer + + + + Zoom In + + + + Zoom Out + + + + Away + + + + Messenger + + + + WebCam + + + + Mail Forward + + + + Pictures + + + + Music + + + + Battery + + + + Bluetooth + + + + Wireless + + + + Ultra Wide Band + + + + Media Fast Forward + + + + Audio Repeat + + + + Audio Random Play + + + + Subtitle + + + + Audio Cycle Track + + + + Time + + + + Hibernate + + + + View + + + + Top Menu + + + + Power Down + + + + Suspend + + + + Microphone Mute + + + + Red + + + + Green + + + + Yellow + + + + Blue + + + + Channel Up + + + + Channel Down + + + + Guide + + + + Info + + + + Settings + + + + Microphone Volume Up + + + + Microphone Volume Down + + + + New + + + + Open + + + + Find + + + + Undo + + + + Redo + + + + Print Screen + + + + Page Up + + + + Page Down + + + + Caps Lock + + + + Num Lock + + + + Number Lock + + + + Scroll Lock + + + + Insert + + + + Delete + + + + Escape + + + + System Request + + + + Select + + + + Yes + + + + No + + + + Context1 + + + + Context2 + + + + Context3 + + + + Context4 + + + + Call + Button to start a call (note: a separate button is used to end the call) + + + + Hangup + Button to end a call (note: a separate button is used to start the call) + + + + Toggle Call/Hangup + Button that will hang up if we're in call, or make a call if we're not. + + + + Flip + + + + Voice Dial + Button to trigger voice dialing + + + + Last Number Redial + Button to redial the last number called + + + + Camera Shutter + Button to trigger the camera shutter (take a picture) + + + + Camera Focus + Button to focus the camera + + + + Kanji + + + + Muhenkan + + + + Henkan + + + + Romaji + + + + Hiragana + + + + Katakana + + + + Hiragana Katakana + + + + Zenkaku + + + + Hankaku + + + + Zenkaku Hankaku + + + + Touroku + + + + Massyo + + + + Kana Lock + + + + Kana Shift + + + + Eisu Shift + + + + Eisu toggle + + + + Code input + + + + Multiple Candidate + + + + Previous Candidate + + + + Hangul + + + + Hangul Start + + + + Hangul End + + + + Hangul Hanja + + + + Hangul Jamo + + + + Hangul Romaja + + + + Hangul Jeonja + + + + Hangul Banja + + + + Hangul PreHanja + + + + Hangul PostHanja + + + + Hangul Special + + + + Cancel + + + + Printer + + + + Execute + + + + Play + + + + Zoom + + + + Exit + + + + Touchpad Toggle + + + + Touchpad On + + + + Touchpad Off + + + + Ctrl + + + + Shift + + + + Alt + + + + Meta + + + + Num + + + + + + + + + F%1 + + + + + QSocks5SocketEngine + + Connection to proxy refused + + + + Connection to proxy closed prematurely + + + + Proxy host not found + + + + Connection to proxy timed out + + + + Proxy authentication failed + + + + Proxy authentication failed: %1 + + + + SOCKS version 5 protocol error + + + + General SOCKSv5 server failure + + + + Connection not allowed by SOCKSv5 server + + + + TTL expired + + + + SOCKSv5 command not supported + + + + Address type not supported + + + + Unknown SOCKSv5 proxy error code 0x%1 + + + + Network operation timed out + + + + + QSpiAccessibleBridge + + invalid role + Role of an accessible object - the object is in an invalid state or could not be constructed + + + + title bar + Role of an accessible object + + + + menu bar + Role of an accessible object + + + + scroll bar + Role of an accessible object + + + + grip + Role of an accessible object - the grip is usually used for resizing another object + + + + sound + Role of an accessible object + + + + cursor + Role of an accessible object + + + + text caret + Role of an accessible object + + + + alert message + Role of an accessible object + + + + frame + Role of an accessible object: a window with frame and title +---------- +Role of an accessible object + + + + filler + Role of an accessible object + + + + popup menu + Role of an accessible object + + + + menu item + Role of an accessible object + + + + tool tip + Role of an accessible object + + + + application + Role of an accessible object + + + + document + Role of an accessible object + + + + panel + Role of an accessible object + + + + chart + Role of an accessible object + + + + dialog + Role of an accessible object + + + + separator + Role of an accessible object + + + + tool bar + Role of an accessible object + + + + status bar + Role of an accessible object + + + + table + Role of an accessible object + + + + column header + Role of an accessible object - part of a table + + + + row header + Role of an accessible object - part of a table + + + + column + Role of an accessible object - part of a table + + + + row + Role of an accessible object - part of a table + + + + cell + Role of an accessible object - part of a table + + + + link + Role of an accessible object + + + + help balloon + Role of an accessible object + + + + assistant + Role of an accessible object - a helper dialog + + + + list + Role of an accessible object + + + + list item + Role of an accessible object + + + + tree + Role of an accessible object + + + + tree item + Role of an accessible object + + + + page tab + Role of an accessible object + + + + property page + Role of an accessible object + + + + indicator + Role of an accessible object + + + + graphic + Role of an accessible object + + + + label + Role of an accessible object + + + + text + Role of an accessible object + + + + push button + Role of an accessible object + + + + check box + Role of an accessible object + + + + radio button + Role of an accessible object + + + + combo box + Role of an accessible object + + + + progress bar + Role of an accessible object + + + + dial + Role of an accessible object + + + + hotkey field + Role of an accessible object + + + + slider + Role of an accessible object + + + + spin box + Role of an accessible object + + + + canvas + Role of an accessible object + + + + animation + Role of an accessible object + + + + equation + Role of an accessible object + + + + button with drop down + Role of an accessible object + + + + button menu + Role of an accessible object + + + + button with drop down grid + Role of an accessible object - a button that expands a grid. + + + + space + Role of an accessible object - blank space between other objects. + + + + page tab list + Role of an accessible object + + + + clock + Role of an accessible object + + + + splitter + Role of an accessible object + + + + layered pane + Role of an accessible object + + + + web document + Role of an accessible object + + + + paragraph + Role of an accessible object + + + + section + Role of an accessible object + + + + color chooser + Role of an accessible object + + + + footer + Role of an accessible object + + + + form + Role of an accessible object + + + + heading + Role of an accessible object + + + + note + Role of an accessible object + + + + complementary content + Role of an accessible object + + + + unknown + Role of an accessible object + + + + + QSqlConnectionDialog + + No database driver selected + + + + Please select a database driver + + + + + QSqlConnectionDialogUi + + Connect... + + + + Connection settings + + + + &Username: + + + + D&river + + + + Default + + + + Database Name: + + + + &Hostname: + + + + P&ort: + + + + &Password: + + + + Us&e predefined in-memory database + + + + &OK + + + + &Cancel + + + + + QSslSocket + + Error when setting the elliptic curves (%1) + + + + Error creating SSL context (%1) + + + + unsupported protocol + + + + Invalid or empty cipher list (%1) + + + + Cannot provide a certificate with no key, %1 + + + + Error loading local certificate, %1 + + + + Error loading private key, %1 + + + + Private key does not certify public key, %1 + + + + OpenSSL version too old, need at least v1.0.2 + + + + No error + + + + The issuer certificate could not be found + + + + The certificate signature could not be decrypted + + + + The public key in the certificate could not be read + + + + The signature of the certificate is invalid + + + + The certificate is not yet valid + + + + The certificate has expired + + + + The certificate's notBefore field contains an invalid time + + + + The certificate's notAfter field contains an invalid time + + + + The certificate is self-signed, and untrusted + + + + The root certificate of the certificate chain is self-signed, and untrusted + + + + The issuer certificate of a locally looked up certificate could not be found + + + + No certificates could be verified + + + + One of the CA certificates is invalid + + + + The basicConstraints path length parameter has been exceeded + + + + The supplied certificate is unsuitable for this purpose + + + + The root CA certificate is not trusted for this purpose + + + + The root CA certificate is marked to reject the specified purpose + + + + The current candidate issuer certificate was rejected because its subject name did not match the issuer name of the current certificate + + + + The current candidate issuer certificate was rejected because its issuer name and serial number was present and did not match the authority key identifier of the current certificate + + + + The peer did not present any certificate + + + + The host name did not match any of the valid hosts for this certificate + + + + The peer certificate is blacklisted + + + + Unknown error + + + + The TLS/SSL connection has been closed + + + + Error creating SSL session, %1 + + + + Error creating SSL session: %1 + + + + Unable to init SSL Context: %1 + + + + Unable to write data: %1 + + + + Unable to decrypt data: %1 + + + + Error while reading: %1 + + + + Error during SSL handshake: %1 + + + + + QStandardPaths + + Desktop + + + + Documents + + + + Fonts + + + + Applications + + + + Music + + + + Movies + + + + Pictures + + + + Temporary Directory + + + + Home + + + + Cache + + + + Shared Data + + + + Runtime + + + + Configuration + + + + Shared Configuration + + + + Shared Cache + + + + Download + + + + Application Data + + + + Application Configuration + + + + + QStateMachine + + Missing initial state in compound state '%1' + + + + Missing default state in history state '%1' + + + + No common ancestor for targets and source of transition from state '%1' + + + + Unknown error + + + + + QSystemSemaphore + + %1: permission denied + + + + %1: already exists + + + + %1: does not exist + + + + %1: out of resources + + + + %1: unknown error %2 + + + + + QTDSDriver + + Unable to open connection + + + + Unable to use database + + + + + QTabBar + + Scroll Left + + + + Scroll Right + + + + + QTcpServer + + Operation on socket is not supported + + + + + QUndoGroup + + Undo %1 + + + + Undo + Default text for undo action + + + + Redo %1 + + + + Redo + Default text for redo action + + + + + QUndoModel + + <empty> + + + + + QUndoStack + + Undo %1 + + + + Undo + Default text for undo action + + + + Redo %1 + + + + Redo + Default text for redo action + + + + + QUnicodeControlCharacterMenu + + LRM Left-to-right mark + + + + RLM Right-to-left mark + + + + ZWJ Zero width joiner + + + + ZWNJ Zero width non-joiner + + + + ZWSP Zero width space + + + + LRE Start of left-to-right embedding + + + + RLE Start of right-to-left embedding + + + + LRO Start of left-to-right override + + + + RLO Start of right-to-left override + + + + PDF Pop directional formatting + + + + LRI Left-to-right isolate + + + + RLI Right-to-left isolate + + + + FSI First strong isolate + + + + PDI Pop directional isolate + + + + Insert Unicode control character + + + + + QWhatsThisAction + + What's This? + + + + + QWidget + + * + + + + + QWidgetTextControl + + &Undo + + + + &Redo + + + + Cu&t + + + + &Copy + + + + Copy &Link Location + + + + &Paste + + + + Delete + + + + Select All + + + + + QWindowsDirect2DIntegration + + Qt cannot load the direct2d platform plugin because the Direct2D version on this system is too old. The minimum system requirement for this platform plugin is Windows 7 SP1 with Platform Update. + +The minimum Direct2D version required is %1.%2.%3.%4. The Direct2D version on this system is %5.%6.%7.%8. + + + + Cannot load direct2d platform plugin + + + + + QWizard + + Go Back + + + + < &Back + + + + Continue + + + + &Next + + + + &Next > + + + + Commit + + + + Done + + + + &Finish + + + + Cancel + + + + Help + + + + &Help + + + + + QXml + + no error occurred + + + + error triggered by consumer + + + + unexpected end of file + + + + more than one document type definition + + + + error occurred while parsing element + + + + tag mismatch + + + + error occurred while parsing content + + + + unexpected character + + + + invalid name for processing instruction + + + + version expected while reading the XML declaration + + + + wrong value for standalone declaration + + + + encoding declaration or standalone declaration expected while reading the XML declaration + + + + standalone declaration expected while reading the XML declaration + + + + error occurred while parsing document type definition + + + + letter is expected + + + + error occurred while parsing comment + + + + error occurred while parsing reference + + + + internal general entity reference not allowed in DTD + + + + external parsed general entity reference not allowed in attribute value + + + + external parsed general entity reference not allowed in DTD + + + + unparsed entity reference in wrong context + + + + recursive entities + + + + error in the text declaration of an external entity + + + + + QXmlStream + + Extra content at end of document. + + + + Invalid entity value. + + + + Invalid XML character. + + + + Sequence ']]>' not allowed in content. + + + + Encountered incorrectly encoded content. + + + + Namespace prefix '%1' not declared + + + + Illegal namespace declaration. + + + + Attribute '%1' redefined. + + + + Unexpected character '%1' in public id literal. + + + + Invalid XML version string. + + + + Unsupported XML version. + + + + The standalone pseudo attribute must appear after the encoding. + + + + %1 is an invalid encoding name. + + + + Encoding %1 is unsupported + + + + Standalone accepts only yes or no. + + + + Invalid attribute in XML declaration. + + + + Premature end of document. + + + + Invalid document. + + + + Expected + + + + , but got ' + + + + Unexpected ' + + + + Expected character data. + + + + Recursive entity detected. + + + + Start tag expected. + + + + NDATA in parameter entity declaration. + + + + XML declaration not at start of document. + + + + %1 is an invalid processing instruction name. + + + + Invalid processing instruction name. + + + + %1 is an invalid PUBLIC identifier. + + + + Invalid XML name. + + + + Opening and ending tag mismatch. + + + + Entity '%1' not declared. + + + + Reference to unparsed entity '%1'. + + + + Reference to external entity '%1' in attribute value. + + + + Invalid character reference. + + + + + QueryPage + + Look for packages + + + + Name: + + + + Released after: + + + + Releases + + + + Upgrades + + + + Return up to + + + + results + + + + Return only the first result + + + + Start query + + + + + RSSListing + + Fetch + + + + Title + + + + Link + + + + RSS listing example + + + + + Receiver + + Listening for broadcasted messages + + + + &Quit + + + + Broadcast Receiver + + + + Received datagram: "%1" + + + + Listening for multicasted messages + + + + Multicast Receiver + + + + + RegExpDialog + + &Pattern: + + + + &Escaped Pattern: + + + + Regular expression v1 + + + + Regular expression v2 + + + + Wildcard + + + + Fixed string + + + + W3C Xml Schema 1.1 + + + + &Pattern Syntax: + + + + &Text: + + + + Case &Sensitive + + + + &Minimal + + + + Index of Match: + + + + Matched Length: + + + + Capture %1: + + + + Match: + + + + [A-Za-z_]+([A-Za-z_0-9]*) + + + + (10 + delta4) * 32 + + + + RegExp + + + + + RegisterPage + + Register Your Copy of <i>Super Product One</i>&trade; + + + + If you have an upgrade key, please fill in the appropriate field. + + + + N&ame: + + + + &Upgrade key: + + + + + RegularExpressionDialog + + QRegularExpression Example + + + + (\+?\d+)-(?<prefix>\d+)-(?<number>\w+) + + + + My office number is +43-152-0123456, my mobile is 001-41-255512 instead. + + + + Valid + + + + <no name> + + + + Invalid: syntax error at position %1 (%2) + + + + <h3>Regular expression and text input</h3> + + + + &Pattern: + + + + Copy to clipboard + + + + &Escaped pattern: + + + + &Subject text: + + + + Case insensitive (/i) + + + + Dot matches everything (/s) + + + + Multiline (/m) + + + + Extended pattern (/x) + + + + Inverted greediness + + + + Don't capture + + + + Use unicode properties (/u) + + + + Optimize on first usage + + + + Don't automatically optimize + + + + Pattern options: + + + + Match &offset: + + + + Normal + + + + Partial prefer complete + + + + Partial prefer first + + + + No match + + + + Match &type: + + + + Don't check subject string + + + + Anchored match + + + + Match options: + + + + <h3>Match information</h3> + + + + Match index + + + + Group index + + + + Captured string + + + + Match details: + + + + <h3>Regular expression information</h3> + + + + Pattern status: + + + + Index + + + + Named group + + + + Named groups: + + + + + RenderArea + + Qt by +The Qt Company + + + + x + + + + y + + + + + RenderOptionsDialog + + Options (double click to flip) + + + + Dynamic cube map + + + + Texture: + + + + Shader: + + + + + RenderWindow + + makeCurrent() failed + + + + + Screenshot + + Options + + + + s + + + + Hide This Window + + + + Screenshot Delay: + + + + New Screenshot + + + + Save Screenshot + + + + Quit + + + + Screenshot + + + + /untitled. + + + + Save As + + + + Save Error + + + + The image could not be saved to "%1". + + + + + Sender + + Ready to broadcast datagrams on port 45454 + + + + &Start + + + + &Quit + + + + Broadcast Sender + + + + Now broadcasting datagram %1 + + + + Ready to multicast datagrams to group %1 on port 45454 + + + + TTL for multicast datagrams: + + + + Multicast Sender + + + + Now sending datagram %1 + + + + + Server + + Quit + + + + Fortune Server + + + + Unable to start the server: %1. + + + + The server is running. +Run the Fortune Client example now. + + + + You've been leading a dog's life. Stay off the furniture. + + + + You've got to think about tomorrow. + + + + You will be surprised by a loud noise. + + + + You will feel hungry again in another hour. + + + + You might have mail. + + + + You cannot kill time without injuring eternity. + + + + Computers are not intelligent. They only think they are. + + + + Opening network session. + + + + The server is running on + +IP: %1 +port: %2 + +Run the Fortune Client example now. + + + + + SessionWidget + + Session Details + + + + Session ID: + + + + Session State: + + + + Invalid + + + + Configuration: + + + + Bearer: + + + + Interface Name: + + + + Interface GUID: + + + + Last Error: + + + + Error String: + + + + 0 + + + + Active Time: + + + + 0 seconds + + + + Open + + + + Blocking Open + + + + Close + + + + Stop + + + + %1 (%2) + + + + Not Available + + + + Connecting + + + + Connected + + + + Closing + + + + Disconnected + + + + Roaming + + + + Unknown + + + + Closed + + + + + SettingsTree + + Setting + + + + Type + + + + Value + + + + + ShapedClock + + E&xit + + + + Ctrl+Q + + + + Drag the clock with the left mouse button. +Use the right mouse button to open a context menu. + + + + Shaped Analog Clock + + + + + SortingBox + + New Circle + + + + New Square + + + + New Triangle + + + + Tool Tips + + + + Circle + + + + Square + + + + Triangle + + + + Circle <%1> + + + + Square <%1> + + + + Triangle <%1> + + + + + SplashItem + + Welcome to the Pad Navigator Example. You can use the keyboard arrows to navigate the icons, and press enter to activate an item. Press any key to begin. + + + + + SpreadSheet + + Spreadsheet + + + + Sum + + + + &Add + + + + &Subtract + + + + &Multiply + + + + &Divide + + + + Font... + + + + Background &Color... + + + + Clear + + + + About Spreadsheet + + + + E&xit + + + + &Print + + + + &File + + + + &Cell + + + + &Help + + + + Cell: (%1) + + + + Cancel + + + + OK + + + + Sum cells + + + + First cell: + + + + Last cell: + + + + Output to: + + + + sum %1 %2 + + + + Cell 1 + + + + Cell 2 + + + + %1 %2 %3 + + + + Addition + + + + Subtraction + + + + Multiplication + + + + Division + + + + + SslClient + + &lt;not connected&gt; + + + + <none> + + + + Display encryption details. + + + + Connection error + + + + + SslErrors + + Unable To Validate The Connection + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; color:#ff0000;">Warning</span><span style=" color:#ff0000;">:</span><span style=" color:#000000;"> One or more errors with this connection prevent validating the authenticity of the host you are connecting to. Please review the following list of errors, and click </span><span style=" color:#000000;">Ignore</span><span style=" color:#000000;"> to continue, or </span><span style=" color:#000000;">Cancel</span><span style=" color:#000000;"> to abort the connection.</span></p></body></html> + + + + View Certificate Chain + + + + Ignore + + + + Cancel + + + + + StorageModel + + 0 b + + + + %1 %2 + this should expand to "1.23 GB" + + + + Root path : %1 +Name: %2 +Display Name: %3 +Device: %4 +FileSystem: %5 +Total size: %6 +Free size: %7 +Available size: %8 +Is Ready: %9 +Is Read-only: %10 +Is Valid: %11 +Is Root: %12 + + + + true + + + + false + + + + Root path + + + + Volume Name + + + + Device + + + + File system + + + + Total + + + + Free + + + + Available + + + + Ready + + + + Read-only + + + + Valid + + + + + StyleSheetEditor + + Style Editor + + + + Default + + + + Coffee + + + + Pagefold + + + + Style: + + + + &Apply + + + + Style Sheet: + + + + + StyleWidget + + Form + + + + Styles + + + + Transp. + + + + Blue + + + + Khaki + + + + None + + + + Value: + + + + Show + + + + Enable + + + + Close + + + + + StyleWindow + + Big Red Button + + + + A simple style button + + + + Style Plugin Example + + + + + TabDialog + + General + + + + Permissions + + + + Applications + + + + Tab Dialog + + + + + TableEditor + + ID + + + + First name + + + + Last name + + + + Submit + + + + &Revert + + + + Quit + + + + Cached Table + + + + The database reported an error: %1 + + + + + TableModel + + Name + + + + Address + + + + + TabletCanvas + + This input device is not supported by the example. + + + + Unknown tablet device - treating as stylus + + + + + TestWidget + + But soft, what light through yonder window breaks? / It is the east, and Juliet is the sun. / Arise, fair sun, and kill the envious moon, / Who is already sick and pale with grief / That thou, her maid, art far more fair than she. + + + + To-morrow, and to-morrow, and to-morrow, / Creeps in this petty pace from day to day, / To the last syllable of recorded time; / And all our yesterdays have lighted fools / The way to dusty death. Out, out, brief candle! / Life's but a walking shadow, a poor player, / That struts and frets his hour upon the stage, / And then is heard no more. It is a tale / Told by an idiot, full of sound and fury, / Signifying nothing. + + + + Feeling lucky, punk? + + + + Switch text + + + + Exit + + + + Elided + + + + + TetrixBoard + + Pause + + + + + TetrixWindow + + &Start + + + + &Quit + + + + &Pause + + + + NEXT + + + + LEVEL + + + + SCORE + + + + LINES REMOVED + + + + Tetrix + + + + + TextEdit + + Help + + + + About + + + + About &Qt + + + + File Actions + + + + &File + + + + &New + + + + &Open... + + + + &Save + + + + Save &As... + + + + &Print... + + + + Print Preview... + + + + &Export PDF... + + + + &Quit + + + + Edit Actions + + + + &Edit + + + + &Undo + + + + &Redo + + + + Cu&t + + + + &Copy + + + + &Paste + + + + Format Actions + + + + F&ormat + + + + &Bold + + + + &Italic + + + + &Underline + + + + &Left + + + + C&enter + + + + &Right + + + + &Justify + + + + &Color... + + + + The document has been modified. +Do you want to save your changes? + + + + %1[*] - %2 + + + + Open File... + + + + Opened "%1" + + + + Could not open "%1" + + + + Wrote "%1" + + + + Could not write to file "%1" + + + + Save as... + + + + Print Document + + + + Export PDF + + + + Exported "%1" + + + + This example demonstrates Qt's rich text editing facilities in action, providing an example document for you to experiment with. + + + + This TextEdit provides autocompletions for words that have more than 3 characters. You can trigger autocompletion using + + + + + ToolBar + + Order Items in Tool Bar + + + + Randomize Items in Tool Bar + + + + Add Spin Box + + + + Remove Spin Box + + + + Movable + + + + Allow on Left + + + + Allow on Right + + + + Allow on Top + + + + Allow on Bottom + + + + Place on Left + + + + Place on Right + + + + Place on Top + + + + Place on Bottom + + + + Insert break + + + + + UpdatePage + + Package selection + + + + Update system + + + + Update applications + + + + Update documentation + + + + Existing packages + + + + Qt + + + + QSA + + + + Teambuilder + + + + Start update + + + + + ValidatorsForm + + Validators + + + + QIntValidator + + + + Min: + + + + Max: + + + + editingFinished() + + + + QDoubleValidator + + + + Format: + + + + Standard + + + + Scientific + + + + Decimals: + + + + Quit + + + + + View + + 0 + + + + Pointer Mode + + + + Select + + + + Drag + + + + Antialiasing + + + + OpenGL + + + + + Widget + + Context &version: + + + + Create context + + + + Profile + + + + Options + + + + Renderable type + + + + Failed to create context + + + + OpenGL version: %1.%2 + + + + Profile: %1 + + + + Options: %1 + + + + Renderable type: %1 + + + + Depth buffer size: %1 + + + + Stencil buffer size: %1 + + + + Samples: %1 + + + + Red buffer size: %1 + + + + Green buffer size: %1 + + + + Blue buffer size: %1 + + + + Alpha buffer size: %1 + + + + Swap interval: %1 + + + + *** Context information *** + + + + Vendor: %1 + + + + Renderer: %1 + + + + OpenGL version: %1 + + + + GLSL version: %1 + + + + +*** QSurfaceFormat from context *** + + + + +*** QSurfaceFormat from window surface *** + + + + +*** Qt build information *** + + + + Qt OpenGL configuration: %1 + + + + Qt OpenGL library handle: %1 + + + + Found %1 extensions: + + + + An error has occurred: +%1 + + + + + WidgetGallery + + &Style: + + + + &Use style's standard palette + + + + &Disable widgets + + + + Styles + + + + Group 1 + + + + Radio button 1 + + + + Radio button 2 + + + + Radio button 3 + + + + Tri-state check box + + + + Group 2 + + + + Default Push Button + + + + Toggle Push Button + + + + Flat Push Button + + + + Twinkle, twinkle, little star, +How I wonder what you are. +Up above the world so high, +Like a diamond in the sky. +Twinkle, twinkle, little star, +How I wonder what you are! + + + + + &Table + + + + Text &Edit + + + + Group 3 + + + + + Window + + &Load image... + + + + &Stop + + + + Queued Custom Type + + + + Open Image + + + + Image files (%1) + + + + &Send message + + + + Custom Type Sending + + + + Na&me: + + + + &Address: + + + + &Type: + + + + &Next + + + + &Previous + + + + SQL Widget Mapper + + + + Cannot open database + + + + Unable to establish a database connection. +This example needs SQLite support. Please read the Qt SQL driver documentation for information how to build it. + + + + Systray + + + + The program will keep running in the system tray. To terminate the program, choose <b>Quit</b> in the context menu of the system tray entry. + + + + Sorry, I already gave what help I could. +Maybe you should try asking a human? + + + + Tray Icon + + + + Bad + + + + Heart + + + + Trash + + + + Show icon + + + + Balloon Message + + + + Type: + + + + None + + + + Information + + + + Warning + + + + Critical + + + + Duration: + + + + (some systems might ignore this hint) + + + + Title: + + + + Cannot connect to network + + + + Body: + + + + Don't believe me. Honestly, I don't have a clue. +Click this balloon for details. + + + + Show Message + + + + Mi&nimize + + + + Ma&ximize + + + + &Restore + + + + &Quit + + + + &Browse... + + + + &Find + + + + * + + + + Named: + + + + Containing text: + + + + In directory: + + + + Find Files + + + + &Cancel + + + + Searching file number %1 of %n... + + + + + + + %1 KB + + + + %n file(s) found (Double click on a file to open it) + + + + + + + Filename + + + + Size + + + + Basic Graphics Layouts Example + + + + Case sensitive sorting + + + + Case sensitive filter + + + + &Filter pattern: + + + + Regular expression + + + + Wildcard + + + + Fixed string + + + + Filter &syntax: + + + + Subject + + + + Sender + + + + Date + + + + Filter &column: + + + + Original Model + + + + Sorted/Filtered Model + + + + Basic Sort/Filter Model + + + + Alice + + + + Neptun + + + + Ferdinand + + + + Name + + + + Hair Color + + + + Color Editor Factory + + + + Delegate Widget Mapper + + + + Home + + + + Work + + + + Other + + + + F&rom: + + + + &To: + + + + Custom Sort/Filter Model + + + + &Directory: + + + + Fetch More Example + + + + %1 items added. + + + + A&ge (in years): + + + + Simple Widget Mapper + + + + Central widget + + + + Border Layout + + + + Short + + + + Longer + + + + Different text + + + + More text + + + + Even longer button text + + + + Flow Layout + + + + Polygon + + + + Rectangle + + + + Rounded Rectangle + + + + Ellipse + + + + Pie + + + + Chord + + + + Path + + + + Line + + + + Polyline + + + + Arc + + + + Points + + + + Text + + + + Pixmap + + + + &Shape: + + + + 0 (cosmetic pen) + + + + Pen &Width: + + + + Solid + + + + Dash + + + + Dot + + + + Dash Dot + + + + Dash Dot Dot + + + + &Pen Style: + + + + Flat + + + + Square + + + + Round + + + + Pen &Cap: + + + + Miter + + + + Bevel + + + + Pen &Join: + + + + Linear Gradient + + + + Radial Gradient + + + + Conical Gradient + + + + Texture + + + + Horizontal + + + + Vertical + + + + Cross + + + + Backward Diagonal + + + + Forward Diagonal + + + + Diagonal Cross + + + + Dense 1 + + + + Dense 2 + + + + Dense 3 + + + + Dense 4 + + + + Dense 5 + + + + Dense 6 + + + + Dense 7 + + + + &Brush: + + + + Options: + + + + &Antialiasing + + + + &Transformations + + + + Basic Drawing + + + + Aliased + + + + Antialiased + + + + Int + + + + Float + + + + Concentric Circles + + + + Qt + + + + Odd Even + + + + Winding + + + + Fill &Rule: + + + + &Fill Gradient: + + + + to + + + + &Pen Width: + + + + Pen &Color: + + + + &Rotation Angle: + + + + Painter Paths + + + + Clock + + + + House + + + + Truck + + + + No transformation + + + + Rotate by 60° + + + + Scale to 75% + + + + Translate by (50, 50) + + + + Transformations + + + + Calendar Widget + + + + Bold + + + + Italic + + + + Green + + + + Preview + + + + General Options + + + + &Locale + + + + Sunday + + + + Monday + + + + Tuesday + + + + Wednesday + + + + Thursday + + + + Friday + + + + Saturday + + + + Wee&k starts on: + + + + Single selection + + + + &Selection mode: + + + + &Grid + + + + &Navigation bar + + + + Single letter day names + + + + Short day names + + + + &Horizontal header: + + + + ISO week numbers + + + + &Vertical header: + + + + Dates + + + + &Minimum Date: + + + + &Current Date: + + + + Ma&ximum Date: + + + + Text Formats + + + + Black + + + + &Weekday color: + + + + Red + + + + Week&end color: + + + + Plain + + + + &Header text: + + + + &First Friday in blue + + + + May &1 in red + + + + Blue + + + + Magenta + + + + Group Boxes + + + + Exclusive Radio Buttons + + + + &Radio button 1 + + + + R&adio button 2 + + + + Ra&dio button 3 + + + + E&xclusive Radio Buttons + + + + Rad&io button 1 + + + + Radi&o button 2 + + + + Radio &button 3 + + + + Ind&ependent checkbox + + + + Non-Exclusive Checkboxes + + + + &Checkbox 1 + + + + C&heckbox 2 + + + + Tri-&state button + + + + &Push Buttons + + + + &Normal Button + + + + &Toggle Button + + + + &Flat Button + + + + Pop&up Button + + + + &First Item + + + + &Second Item + + + + &Third Item + + + + F&ourth Item + + + + Submenu + + + + Popup Submenu + + + + Item 1 + + + + Item 2 + + + + Item 3 + + + + Echo + + + + Mode: + + + + Normal + + + + Password + + + + PasswordEchoOnEdit + + + + No Echo + + + + Validator + + + + No validator + + + + Integer validator + + + + Double validator + + + + Alignment + + + + Left + + + + Centered + + + + Right + + + + Input mask + + + + No mask + + + + Phone number + + + + ISO date + + + + License key + + + + Access + + + + Read-only: + + + + False + + + + True + + + + Line Edits + + + + Controls + + + + Sliders + + + + Minimum value: + + + + Maximum value: + + + + Current value: + + + + Inverted appearance + + + + Inverted key bindings + + + + Horizontal slider-like widgets + + + + Vertical slider-like widgets + + + + Spin Boxes + + + + Spinboxes + + + + Enter a value between %1 and %2: + + + + Enter a zoom value between %1 and %2: + + + + Automatic + + + + Enter a price between %1 and %2: + + + + Show group separator + + + + Date and time spin boxes + + + + Appointment date (between %0 and %1): + + + + Appointment time (between %0 and %1): + + + + Format string for the meeting date and time: + + + + Meeting date (between %0 and %1): + + + + Meeting time (between %0 and %1): + + + + Double precision spinboxes + + + + Number of decimal places to show: + + + + Enter a scale factor between %1 and %2: + + + + No scaling + + + + 2D Painting on Native and OpenGL Widgets + + + + Native + + + + OpenGL + + + + Undock + + + + Hello GL + + + + Dock + + + + Cannot dock + + + + Main window already closed + + + + Main window already occupied + + + + Textures + + + + + XFormWidget + + Affine Transformations + + + + Rotate + + + + Scale + + + + Shear + + + + Type + + + + Vector Image + + + + Pixmap + + + + Text + + + + Reset Transform + + + + Animate + + + + Show Source + + + + Use OpenGL + + + + What's This? + + + + + XbelTree + + Title + + + + Location + + + + DOM Bookmarks + + + + Parse error at line %1, column %2: +%3 + + + + The file is not an XBEL file. + + + + The file is not an XBEL version 1.0 file. + + + + + XmlStreamLint + + Usage: xmlstreamlint <path to XML file> + + + + + File %1 does not exist. + + + + + Failed to open file %1. + + + + + Failed to open stdout. + + + + Error: %1 in file %2 at line %3, column %4. + + + + + + childwidget + + Child widget + + + + Press me + + + + + contekst + + Intro + + + + Introx + + + + + nestedlayouts + + Query: + + + + Name + + + + Office + + + + Nested layouts + + + + + simpleanchorlayout + + QGraphicsAnchorLayout in use + + + + Simple Anchor Layout + + + + + toplevel + + Top-level widget + + + + + tst_QKeySequence + + Shift++ + + + + Ctrl++ + + + + Alt++ + + + + Meta++ + + + + Shift+,, Shift++ + + + + Shift+,, Ctrl++ + + + + Shift+,, Alt++ + + + + Shift+,, Meta++ + + + + Ctrl+,, Shift++ + + + + Ctrl+,, Ctrl++ + + + + Ctrl+,, Alt++ + + + + Ctrl+,, Meta++ + + + + + tst_QLocale + + tr_TR + + + + + windowlayout + + Name: + + + + Window layout + + + +