#pragma once #include #include #include #include #include #include #include #include #include "util/gtk_icon.hpp" class IconLoader { private: std::vector> custom_icon_themes_; Glib::RefPtr default_icon_theme_ = Gtk::IconTheme::get_default(); static std::vector search_prefix(); static Glib::RefPtr get_app_info_by_name(const std::string &app_id); static Glib::RefPtr get_desktop_app_info(const std::string &app_id); static Glib::RefPtr load_icon_from_file(std::string const &icon_path, int size); static std::string get_icon_name_from_icon_theme(const Glib::RefPtr &icon_theme, const std::string &app_id); static bool image_load_icon(Gtk::Image &image, const Glib::RefPtr &icon_theme, Glib::RefPtr app_info, int size); public: void add_custom_icon_theme(const std::string &theme_name); bool image_load_icon(Gtk::Image &image, Glib::RefPtr app_info, int size) const; static Glib::RefPtr get_app_info_from_app_id_list( const std::string &app_id_list); };