summaryrefslogtreecommitdiff
path: root/abaddon.cpp
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2020-09-04 01:37:39 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2020-09-04 01:37:39 -0400
commit153f55668192a235c1874b332a665de6d5883306 (patch)
treef4da5808b57d1ed75c12a82625780c31abf8a138 /abaddon.cpp
parent66e99890350c75268d3bc6db43de1cff30ff7fa0 (diff)
downloadabaddon-portaudio-153f55668192a235c1874b332a665de6d5883306.tar.gz
abaddon-portaudio-153f55668192a235c1874b332a665de6d5883306.zip
catch errors when loading css
Diffstat (limited to 'abaddon.cpp')
-rw-r--r--abaddon.cpp19
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> &section, 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) {