aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp47
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;