diff options
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 47 |
1 files changed, 36 insertions, 11 deletions
diff --git a/src/main.cpp b/src/main.cpp index 1dbf1d5e..aad4b8fd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -25,7 +25,9 @@ #include <cstdlib> #include "GpgFrontendBuildInfo.h" +#include "gpg/GpgContext.h" #include "ui/MainWindow.h" +#include "ui/WaitingDialog.h" #include "ui/settings/GlobalSettingStation.h" // Easy Logging Cpp @@ -40,7 +42,10 @@ int main(int argc, char* argv[]) { // Qt App QApplication app(argc, argv); + +#ifndef MACOS QApplication::setWindowIcon(QIcon(":gpgfrontend.png")); +#endif #ifdef MACOS // support retina screen @@ -60,7 +65,7 @@ int main(int argc, char* argv[]) { // unicode in source QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf-8")); -#if !defined(RELEASE) +#if !defined(RELEASE) && defined(WINDOWS) // css QFile file(RESOURCE_DIR(qApp->applicationDirPath()) + "/css/default.qss"); file.open(QFile::ReadOnly); @@ -75,17 +80,37 @@ int main(int argc, char* argv[]) { */ int return_from_event_loop_code; - do { - // i18n - init_locale(); - - QApplication::setQuitOnLastWindowClosed(true); - - auto main_window = std::make_unique<GpgFrontend::UI::MainWindow>(); - main_window->init(); - main_window->show(); - return_from_event_loop_code = QApplication::exec(); + // Create & Check Gnupg Context Status + if (!GpgFrontend::GpgContext::GetInstance().good()) { + QMessageBox::critical( + nullptr, _("ENV Loading Failed"), + _("Gnupg(gpg) is not installed correctly, please follow the " + "ReadME " + "instructions in Github to install Gnupg and then open " + "GpgFrontend.")); + QCoreApplication::quit(); + exit(0); + } + do { + try { + // i18n + init_locale(); + + QApplication::setQuitOnLastWindowClosed(true); + + auto main_window = std::make_unique<GpgFrontend::UI::MainWindow>(); + main_window->init(); + main_window->show(); + return_from_event_loop_code = QApplication::exec(); + + } catch (...) { + QMessageBox::information(nullptr, _("Unhandled Exception Thrown"), + _("Oops, an unhandled exception was thrown " + "during the running of the " + "program, and now it needs to be restarted.")); + continue; + } } while (return_from_event_loop_code == RESTART_CODE); return return_from_event_loop_code; |