diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-09-04 01:37:39 -0400 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-09-04 01:37:39 -0400 |
commit | 153f55668192a235c1874b332a665de6d5883306 (patch) | |
tree | f4da5808b57d1ed75c12a82625780c31abf8a138 /abaddon.cpp | |
parent | 66e99890350c75268d3bc6db43de1cff30ff7fa0 (diff) | |
download | abaddon-portaudio-153f55668192a235c1874b332a665de6d5883306.tar.gz abaddon-portaudio-153f55668192a235c1874b332a665de6d5883306.zip |
catch errors when loading css
Diffstat (limited to 'abaddon.cpp')
-rw-r--r-- | abaddon.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
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<const Gtk::CssSection> §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<MainWindow>(); 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) { |