catch errors when loading css

This commit is contained in:
ouwou
2020-09-04 01:37:39 -04:00
parent 66e9989035
commit 153f556681

View File

@@ -27,8 +27,10 @@ int Abaddon::StartGTK() {
// tmp css stuff // tmp css stuff
m_css_provider = Gtk::CssProvider::create(); m_css_provider = Gtk::CssProvider::create();
m_css_provider->load_from_path("./css/main.css"); m_css_provider->signal_parsing_error().connect([this](const Glib::RefPtr<const Gtk::CssSection> &section, const Glib::Error &error) {
Gtk::StyleContext::add_provider_for_screen(Gdk::Screen::get_default(), m_css_provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); Gtk::MessageDialog dlg(*m_main_window, "main.css failed parsing (" + error.what() + ")", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
dlg.run();
});
m_main_window = std::make_unique<MainWindow>(); m_main_window = std::make_unique<MainWindow>();
m_main_window->SetAbaddon(this); m_main_window->SetAbaddon(this);
@@ -36,6 +38,8 @@ int Abaddon::StartGTK() {
m_main_window->show(); m_main_window->show();
m_main_window->UpdateComponents(); m_main_window->UpdateComponents();
ActionReloadCSS();
m_gtk_app->signal_shutdown().connect([&]() { m_gtk_app->signal_shutdown().connect([&]() {
StopDiscord(); StopDiscord();
}); });
@@ -226,9 +230,14 @@ void Abaddon::ActionChatEditMessage(Snowflake channel_id, Snowflake id) {
} }
void Abaddon::ActionReloadCSS() { void Abaddon::ActionReloadCSS() {
Gtk::StyleContext::remove_provider_for_screen(Gdk::Screen::get_default(), m_css_provider); try {
m_css_provider->load_from_path("./css/main.css"); Gtk::StyleContext::remove_provider_for_screen(Gdk::Screen::get_default(), m_css_provider);
Gtk::StyleContext::add_provider_for_screen(Gdk::Screen::get_default(), m_css_provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); m_css_provider->load_from_path("./css/main.css");
Gtk::StyleContext::add_provider_for_screen(Gdk::Screen::get_default(), m_css_provider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
} catch (Glib::Error &e) {
Gtk::MessageDialog dlg(*m_main_window, "main.css failed to load (" + e.what() + ")", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
dlg.run();
}
} }
int main(int argc, char **argv) { int main(int argc, char **argv) {