diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-12-13 00:31:50 -0500 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-12-13 00:31:50 -0500 |
commit | 38a49d172cb934a16f9203f8f6d1b21b1adc31df (patch) | |
tree | f88a8a664845c9ec407dd77b7cf15ab568c4abc1 | |
parent | 72935b055840b78ddc260af01134003798ca4308 (diff) | |
download | abaddon-portaudio-38a49d172cb934a16f9203f8f6d1b21b1adc31df.tar.gz abaddon-portaudio-38a49d172cb934a16f9203f8f6d1b21b1adc31df.zip |
warn if pixbufloaders arent found
-rw-r--r-- | src/abaddon.cpp | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/abaddon.cpp b/src/abaddon.cpp index db8c02a..b58ca97 100644 --- a/src/abaddon.cpp +++ b/src/abaddon.cpp @@ -64,18 +64,41 @@ int Abaddon::StartGTK() { m_css_provider = Gtk::CssProvider::create(); 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, "css failed parsing (" + error.what() + ")", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); + Gtk::MessageDialog dlg("css failed parsing (" + error.what() + ")", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); dlg.set_position(Gtk::WIN_POS_CENTER); dlg.run(); }); m_css_low_provider = Gtk::CssProvider::create(); m_css_low_provider->signal_parsing_error().connect([this](const Glib::RefPtr<const Gtk::CssSection> §ion, const Glib::Error &error) { - Gtk::MessageDialog dlg(*m_main_window, "low-priority css failed parsing (" + error.what() + ")", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); + Gtk::MessageDialog dlg("low-priority css failed parsing (" + error.what() + ")", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); dlg.set_position(Gtk::WIN_POS_CENTER); dlg.run(); }); +#ifdef _WIN32 + bool png_found = false; + bool gif_found = false; + for (const auto &fmt : Gdk::Pixbuf::get_formats()) { + if (fmt.get_name() == "png") + png_found = true; + else if (fmt.get_name() == "gif") + gif_found = true; + } + + if (!png_found) { + Gtk::MessageDialog dlg("The PNG pixbufloader wasn't detected. Abaddon may not work as a result.", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); + dlg.set_position(Gtk::WIN_POS_CENTER); + dlg.run(); + } + + if (!gif_found) { + Gtk::MessageDialog dlg("The GIF pixbufloader wasn't detected. Animations may not display as a result.", false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); + dlg.set_position(Gtk::WIN_POS_CENTER); + dlg.run(); + } +#endif + m_main_window = std::make_unique<MainWindow>(); m_main_window->set_title(APP_TITLE); m_main_window->set_position(Gtk::WIN_POS_CENTER); |