From 153f55668192a235c1874b332a665de6d5883306 Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Fri, 4 Sep 2020 01:37:39 -0400 Subject: catch errors when loading css --- abaddon.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'abaddon.cpp') diff --git a/abaddon.cpp b/abaddon.cpp index 6c92439..f5a65b1 100644 --- a/abaddon.cpp +++ b/abaddon.cpp @@ -27,8 +27,10 @@ int Abaddon::StartGTK() { // tmp css stuff m_css_provider = Gtk::CssProvider::create(); - 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); + m_css_provider->signal_parsing_error().connect([this](const Glib::RefPtr §ion, const Glib::Error &error) { + 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(); m_main_window->SetAbaddon(this); @@ -36,6 +38,8 @@ int Abaddon::StartGTK() { m_main_window->show(); m_main_window->UpdateComponents(); + ActionReloadCSS(); + m_gtk_app->signal_shutdown().connect([&]() { StopDiscord(); }); @@ -226,9 +230,14 @@ void Abaddon::ActionChatEditMessage(Snowflake channel_id, Snowflake id) { } void Abaddon::ActionReloadCSS() { - Gtk::StyleContext::remove_provider_for_screen(Gdk::Screen::get_default(), m_css_provider); - 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); + try { + Gtk::StyleContext::remove_provider_for_screen(Gdk::Screen::get_default(), m_css_provider); + 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) { -- cgit v1.2.3