41 const std::string& file,
42 const std::string& family,
45 vbox(Gtk::Orientation::VERTICAL, 15),
46 titleLabel(
_(
"⚠️ Ransomware rilevato in tempo reale")),
48 Glib::ustring::compose(
49 _(
"Famiglia: %1\nFile: %2"),
60 set_default_size(620, 240);
64 auto ctx = get_style_context();
65 ctx->add_class(
"app-dialog");
66 ctx->add_class(
"main-window");
67 ctx->add_class(
"app-window");
70 auto css = Gtk::CssProvider::create();
72 Gtk::StyleContext::add_provider_for_display(
73 Gdk::Display::get_default(),
75 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION
78 std::cerr <<
_(
"Errore caricamento CSS\n");
81 auto *header = Gtk::make_managed<Gtk::HeaderBar>();
82 header->set_show_title_buttons(
false);
83 header->set_decoration_layout(
"");
84 header->add_css_class(
"custom-headerbar");
86 auto *close_box = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::HORIZONTAL);
87 close_box->set_margin_end(6);
90 auto px = Gdk::Pixbuf::create_from_file(
resource(
"icon-close.png"), 28, 28,
true);
91 auto *btn = Gtk::make_managed<Gtk::Button>();
92 btn->set_child(*Gtk::make_managed<Gtk::Image>(px));
93 btn->add_css_class(
"header-button");
95 btn->signal_clicked().connect([
this]() { hide(); });
96 close_box->append(*btn);
98 std::cerr <<
_(
"Icona X non trovata\n");
101 header->pack_end(*close_box);
103 auto *header_wrapper = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::VERTICAL);
104 header_wrapper->append(*header);
105 set_titlebar(*header_wrapper);
110 std::string iconPath =
111 (family ==
"OK" || family ==
"Clean" || family ==
"None")
112 ?
"/usr/share/BastionGuard/data/icons/true.png"
113 :
"/usr/share/BastionGuard/data/icons/false.png";
115 auto icon = Gtk::make_managed<Gtk::Picture>();
116 icon->set_halign(Gtk::Align::CENTER);
117 icon->set_margin_bottom(10);
119 if (std::filesystem::exists(iconPath)) {
121 auto pb = Gdk::Pixbuf::create_from_file(iconPath);
122 auto scaled = pb->scale_simple(68, 68, Gdk::InterpType::BILINEAR);
123 auto tex = Gdk::Texture::create_for_pixbuf(scaled);
124 icon->set_paintable(tex);
126 std::cerr <<
_(
"Errore caricamento icona alert\n");
136 Glib::ustring::compose(
137 _(
"🕒 %1 altri in attesa..."),
150 Gtk::make_managed<Gtk::Box>(Gtk::Orientation::HORIZONTAL, 20);
151 buttonBox->set_halign(Gtk::Align::CENTER);
157 vbox.set_halign(Gtk::Align::CENTER);
162 vbox.append(*buttonBox);
167 ignoreButton.signal_clicked().connect([
this]() { hide(); });