Files
Proxmark3GUI/src/main.cpp
T

65 lines
2.0 KiB
C++
Raw Normal View History

2022-03-01 11:13:07 +08:00
#include "ui/mainwindow.h"
#include <QApplication>
#include <QSettings>
#include <QTranslator>
#include <QMessageBox>
#include <QTextCodec>
#include <QDir>
int main(int argc, char *argv[])
{
// A trick to handle non-ascii path
// The application cannot find the plugins when the path contains non ascii characters.
// However, the plugins will be load after creating MainWindow(or QApplication?).
// QDir will handle the path correctly.
QDir* pluginDir = new QDir;
if(pluginDir->cd("plugins")) // has plugins folder
{
qputenv("QT_PLUGIN_PATH", pluginDir->absolutePath().toLocal8Bit());
}
delete pluginDir;
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QApplication a(argc, argv);
MainWindow w;
QSettings* settings = new QSettings("GUIsettings.ini", QSettings::IniFormat);
settings->setIniCodec("UTF-8");
2022-11-24 01:24:13 +08:00
settings->beginGroup("language");
QString languageFile = settings->value("extPath").toString();
QString languageName = settings->value("name").toString();
2022-03-01 11:13:07 +08:00
settings->endGroup();
2022-11-24 01:24:13 +08:00
if(languageName == "")
2022-03-01 11:13:07 +08:00
{
if(Util::chooseLanguage(settings, &w))
{
2022-11-24 01:24:13 +08:00
settings->beginGroup("language");
languageName = settings->value("name").toString();
2022-03-01 11:13:07 +08:00
settings->endGroup();
}
else
2022-11-24 01:24:13 +08:00
languageName = "en_US";
}
if(languageName == "(ext)")
{
settings->beginGroup("language");
languageFile = settings->value("extPath").toString();
settings->endGroup();
2022-03-01 11:13:07 +08:00
}
else
2022-11-24 01:24:13 +08:00
languageFile = ":/i18n/" + languageName + ".qm";
2022-03-01 11:13:07 +08:00
QTranslator* translator = new QTranslator(&w);
2022-11-24 01:24:13 +08:00
if(translator->load(languageFile))
2022-03-01 11:13:07 +08:00
a.installTranslator(translator);
else
2022-11-24 01:24:13 +08:00
QMessageBox::information(&w, "Error", "Can't load " + languageFile + " as translation file.");
2022-03-01 11:13:07 +08:00
delete settings;
w.initUI();
w.show();
return a.exec();
}