53 const std::string& family,
56 vbox(Gtk::Orientation::VERTICAL, 15),
57 titleLabel(
_(
"⚠️ Attenzione: BastionGuard ha rilevato un'infezione")),
58 messageLabel(
_(
"Famiglia: ") + family +
"\n" +
_(
"File: ") + file),
64 set_default_size(620, 240);
68 auto ctx = get_style_context();
69 ctx->add_class(
"app-dialog");
70 ctx->add_class(
"main-window");
71 ctx->add_class(
"app-window");
75 auto css = Gtk::CssProvider::create();
77 Gtk::StyleContext::add_provider_for_display(
78 Gdk::Display::get_default(),
80 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION
83 auto header = Gtk::make_managed<Gtk::HeaderBar>();
84 header->set_show_title_buttons(
false);
85 header->set_decoration_layout(
"");
86 header->add_css_class(
"custom-headerbar");
88 auto close_btn = Gtk::make_managed<Gtk::Button>();
90 auto px = Gdk::Pixbuf::create_from_file(
91 resource(
"icon-close.png"), 28, 28,
true
93 close_btn->set_child(*Gtk::make_managed<Gtk::Image>(px));
96 close_btn->add_css_class(
"header-button");
97 close_btn->signal_clicked().connect([
this]() {
101 header->pack_end(*close_btn);
102 set_titlebar(*header);
104 titleLabel.get_style_context()->add_class(
"title");
106 std::string iconPath =
107 (family ==
"OK" || family ==
"Clean" || family ==
"None")
108 ?
"/usr/share/BastionGuard/data/icons/true.png"
109 :
"/usr/share/BastionGuard/data/icons/false.png";
111 auto icon = Gtk::make_managed<Gtk::Picture>();
112 icon->set_halign(Gtk::Align::CENTER);
114 if (fs::exists(iconPath)) {
116 auto pb = Gdk::Pixbuf::create_from_file(iconPath);
117 auto scaled = pb->scale_simple(68, 68, Gdk::InterpType::BILINEAR);
118 icon->set_paintable(Gdk::Texture::create_for_pixbuf(scaled));
128 Glib::ustring::compose(
_(
"🕒 %1 altri in attesa..."), pending)
137 auto buttons = Gtk::make_managed<Gtk::Box>(
138 Gtk::Orientation::HORIZONTAL, 20
140 buttons->set_halign(Gtk::Align::CENTER);
147 vbox.set_halign(Gtk::Align::CENTER);
152 vbox.append(*buttons);