45{
47
49 const std::string cssName = (theme == "dark")
50 ? "BastionGuard-dark.css"
51 : "BastionGuard.css";
52
53 const std::string local = "data/" + cssName;
54 const std::string installed = std::string(
DATA_DIR) +
"/" + cssName;
55
56 std::string used;
57
58 try {
59 if (std::filesystem::exists(local)) {
61 used = local;
62 } else if (std::filesystem::exists(installed)) {
64 used = installed;
65 } else {
66 const std::string fallback_local = "data/BastionGuard.css";
67 const std::string fallback_installed = std::string(
DATA_DIR) +
"/BastionGuard.css";
68 if (std::filesystem::exists(fallback_local)) {
70 used = fallback_local;
71 } else if (std::filesystem::exists(fallback_installed)) {
72 global_css->load_from_path(fallback_installed);
73 used = fallback_installed;
74 } else {
75 std::cerr <<
trs(
"⚠ No CSS file found:\n")
76 << " " << local << "\n " << installed
77 << std::endl;
78 return;
79 }
80 }
81
82 auto display = Gdk::Display::get_default();
83 if (display) {
84 gtk_style_context_add_provider_for_display(
85 display->gobj(),
87 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION
88 );
89 }
90
91 std::cout <<
_(
"[CSS] Tema '") << theme
92 <<
_(
"' caricato da: ") << used << std::endl;
93
94 } catch (const Glib::Error& ex) {
95 std::cerr <<
_(
"❌ Errore CSS: ") << ex.what() << std::endl;
96 }
97}
std::string trs(const char *msgid)
Glib::RefPtr< Gtk::CssProvider > global_css
static std::string read_saved_theme()