#include "view_open_browser.h" view_open_browser::view_open_browser(/* args */) { builder = Gtk::Builder::create_from_file(path_glade); this->settings(); } view_open_browser::~view_open_browser() { } void settings() { this->get_builder(); #ifdef WEBKIT_FOUND one = WEBKIT_WEB_VIEW( webkit_web_view_new() ); three = Glib::wrap(GTK_WIDGET(one)); wndWeb->add(*three); #endif this->lacalization(); this->event(); } void view_open_browser::show() { wndShowWeb->show(); } void view_open_browser::get_builder() { #ifdef WEBKIT_FOUND builder->get_widget("wndWeb", wndWeb); #endif builder->get_widget("lblHeadeWndWeb", lblHeadeWndWeb); builder->get_widget("lblwebHeaderName", lblwebHeaderName); builder->get_widget("lblhelpText", lblhelpText); builder->get_widget("lblhelpHeader", lblhelpHeader); builder->get_widget("chkAlwaysOpenHelp", chkAlwaysOpenHelp); builder->get_widget("btnReadHelp", btnReadHelp); builder->get_widget("btnCancelHelp", btnCancelHelp); builder->get_widget("wndShowWeb", wndShowWeb); } void view_open_browser::lacalization() { lblwebHeaderName->set_label(name_app); lblhelpText->set_text(redirected_documentation); btnReadHelp->set_label(read_online); btnCancelHelp->set_label(cancel); chkAlwaysOpenHelp->set_label(always_redirect); lblhelpHeader->set_text(read_documentation_web); } void view_open_browser::event() { btnCancelHelp->signal_clicked().connect([&]() {wndShowWeb->hide();}); chkAlwaysOpenHelp->signal_toggled().connect([&]() {flag_open_browser = true;}); btnReadHelp->signal_clicked().connect(sigc::mem_fun(*this, &view_open_browser::open_browser)); } void view_open_browser::show() { if (flag_open_browser == true) { this->open_browser(); } else { wndShowWeb->show_all(); } } void view_open_browser::open_browser() { #ifdef WEBKIT_FOUND webkit_web_view_load_uri(one, link_doc); wndWeb->show_all(); #else if (this->template_open_browser() != 0) { } #endif } int view_open_browser::template_open_browser() { string cmd = cmd_xdg + string(_(link_doc)) + " &"; string buf = ""; if (geteuid() == 0) { string response_user = getlogin(); int size_s = std::snprintf(nullptr, 0, cmd_execute, response_user.c_str(), cmd.c_str()) + 1; auto size = static_cast(size_s); std::unique_ptr buf(new char[ size ]); std::snprintf( buf.get(), size, cmd_execute, response_user.c_str(), cmd.c_str() ); cmd = std::string( buf.get(), buf.get() + size - 1 ); } return system(cmd); } void view_filters::set_path_glade(string path_glade) { this->path_glade = path_glade; }