41 :
root_(Gtk::Orientation::VERTICAL, 16),
45 set_default_size(620, 420);
48 if (parent) set_transient_for(*parent);
50 add_css_class(
"app-dialog");
51 add_css_class(
"main-window");
52 add_css_class(
"app-window");
55 auto css = Gtk::CssProvider::create();
57 Gtk::StyleContext::add_provider_for_display(
58 Gdk::Display::get_default(), css,
59 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION
63 auto *header = Gtk::make_managed<Gtk::HeaderBar>();
64 header->set_show_title_buttons(
false);
65 header->set_decoration_layout(
"");
66 header->add_css_class(
"custom-headerbar");
68 auto *close_box = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::HORIZONTAL);
69 close_box->set_margin_end(6);
72 auto px = Gdk::Pixbuf::create_from_file(
resource(
"icon-close.png"), 28, 28,
true);
73 auto btn = Gtk::make_managed<Gtk::Button>();
74 btn->set_child(*Gtk::make_managed<Gtk::Image>(px));
75 btn->add_css_class(
"header-button");
76 btn->signal_clicked().connect([
this]() { hide(); });
77 close_box->append(*btn);
80 header->pack_end(*close_box);
82 auto *header_wrap = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::VERTICAL);
83 header_wrap->append(*header);
84 set_titlebar(*header_wrap);
88 auto title = Gtk::make_managed<Gtk::Label>(
89 _(
"Scansione della periferica USB in corso")
91 title->add_css_class(
"title");
92 title->set_halign(Gtk::Align::CENTER);
95 auto *icon = Gtk::make_managed<Gtk::Picture>();
96 icon->set_halign(Gtk::Align::CENTER);
97 icon->set_margin_bottom(10);
99 auto pb = Gdk::Pixbuf::create_from_file(
resource(
"icons/scan.png"));
100 auto scaled = pb->scale_simple(64, 64, Gdk::InterpType::BILINEAR);
101 icon->set_paintable(Gdk::Texture::create_for_pixbuf(scaled));
105 auto device_label = Gtk::make_managed<Gtk::Label>(
106 _(
"Percorso analizzato:\n") + path
108 device_label->set_wrap(
true);
109 device_label->set_halign(Gtk::Align::CENTER);
110 root_.append(*device_label);
128 progress_.set_text(
_(
"Interruzione in corso..."));
136 Glib::signal_timeout().connect(
137 [
this, alive]() ->
bool {
138 if (!alive || !alive->load(std::memory_order_acquire)) {