45 set_default_size(640, 300);
49 auto main_box = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::HORIZONTAL, 0);
53 auto sidebar = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::VERTICAL, 10);
54 sidebar->set_size_request(240, -1);
55 sidebar->get_style_context()->add_class(
"sidebar");
59 auto header = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::HORIZONTAL, 8);
60 header->get_style_context()->add_class(
"sidebar-header");
63 auto pixbuf = Gdk::Pixbuf::create_from_file(
resource(
"logo-sidebar.png"), 96, 96,
true);
64 auto logo = Gtk::make_managed<Gtk::Image>(pixbuf);
65 header->append(*logo);
67 std::cerr <<
_(
"⚠ Impossibile caricare data/logo-sidebar.png") <<
"\n";
70 auto lbl = Gtk::make_managed<Gtk::Label>(
"BastionGuard");
71 lbl->set_halign(Gtk::Align::START);
72 lbl->get_style_context()->add_class(
"sidebar-title");
75 sidebar->append(*header);
79 auto spacer = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::VERTICAL);
80 spacer->set_vexpand(
true);
81 sidebar->append(*spacer);
83 main_box->append(*sidebar);
86 auto content_box = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::VERTICAL, 10);
87 content_box->set_margin(24);
88 content_box->set_hexpand(
true);
89 content_box->get_style_context()->add_class(
"content");
90 main_box->append(*content_box);
92 auto label = Gtk::make_managed<Gtk::Label>(
93 _(
"Inserisci l'URL della banca o un identificatore:")
95 label->set_wrap(
true);
96 label->set_halign(Gtk::Align::START);
97 content_box->append(*label);
99 entry_.set_placeholder_text(
"https://www.miabanca.it");
100 entry_.set_activates_default(
true);
101 content_box->append(
entry_);
103 auto buttons = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::HORIZONTAL, 8);
104 buttons->set_halign(Gtk::Align::END);
110 btn_open_.set_label(
_(
"Apri in Secure Browser"));
114 content_box->append(*buttons);
133 auto header = Gtk::make_managed<Gtk::HeaderBar>();
134 header->set_show_title_buttons(
false);
135 header->set_decoration_layout(
"");
136 header->get_style_context()->add_class(
"custom-headerbar");
139 auto title_label = Gtk::make_managed<Gtk::Label>(
"BastionGuard Secure Browser");
140 title_label->get_style_context()->add_class(
"header-title");
141 title_label->set_halign(Gtk::Align::CENTER);
142 title_label->set_valign(Gtk::Align::CENTER);
143 header->set_title_widget(*title_label);
146 auto header_right = Gtk::make_managed<Gtk::Box>(Gtk::Orientation::HORIZONTAL);
147 header_right->get_style_context()->add_class(
"header-right");
150 auto pix_min = Gdk::Pixbuf::create_from_file(
resource(
"icon-minimize.png"), 32, 32,
true);
151 auto btn_min = Gtk::make_managed<Gtk::Button>();
152 btn_min->set_child(*Gtk::make_managed<Gtk::Image>(pix_min));
153 btn_min->get_style_context()->add_class(
"header-button");
154 header_right->append(*btn_min);
155 btn_min->signal_clicked().connect([
this]() {
minimize(); });
157 std::cerr <<
_(
"⚠ Errore caricamento icona minimize") <<
"\n";
161 auto pix_close = Gdk::Pixbuf::create_from_file(
resource(
"icon-close.png"), 32, 32,
true);
162 auto btn_close = Gtk::make_managed<Gtk::Button>();
163 btn_close->set_child(*Gtk::make_managed<Gtk::Image>(pix_close));
164 btn_close->get_style_context()->add_class(
"header-button");
165 header_right->append(*btn_close);
166 btn_close->signal_clicked().connect([
this]() {
171 std::cerr <<
_(
"⚠ Errore caricamento icona close") <<
"\n";
174 header->pack_end(*header_right);
175 set_titlebar(*header);
213 void show_warning(
const Glib::ustring& msg,
const Glib::ustring& secondary = {}) {
214 auto* dialog =
new Gtk::MessageDialog(
215 *
this, msg,
false, Gtk::MessageType::WARNING, Gtk::ButtonsType::OK,
true);
216 if (!secondary.empty()) dialog->set_secondary_text(secondary);
217 dialog->set_modal(
true);
218 dialog->signal_response().connect([dialog](
int){ dialog->hide();
delete dialog; });