You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.5 KiB
112 lines
3.5 KiB
#include "view_open_browser.h"
|
|
|
|
|
|
View_open_browser* obj_open_browser;
|
|
View_about* obj_about;
|
|
|
|
void wrapper_help_show(GtkWidget *self, char* link, gpointer user_data) {
|
|
if (self && user_data) {}
|
|
obj_open_browser->global_lick_doc = link;
|
|
obj_about->aboutWindows->hide();
|
|
obj_open_browser->temp_help_show();
|
|
}
|
|
|
|
View_open_browser::View_open_browser(/* args */) {
|
|
builder = Gtk::Builder::create_from_file(path_glade);
|
|
}
|
|
|
|
View_open_browser::~View_open_browser() {
|
|
}
|
|
|
|
void View_open_browser::settings() {
|
|
obj_open_browser = this;
|
|
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::set_obj_about(View_about* obj_view_about) {
|
|
this->obj_view_about = obj_view_about;
|
|
obj_about = obj_view_about;
|
|
}
|
|
|
|
void View_open_browser::show() {
|
|
this->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() {
|
|
g_signal_connect(G_OBJECT(obj_view_about->aboutWindows->gobj()), "activate-link", G_CALLBACK(wrapper_help_show), NULL);
|
|
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::temp_help_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, _(global_lick_doc.c_str()));
|
|
wndWeb->show_all();
|
|
#else
|
|
this->template_open_browser(global_lick_doc);
|
|
#endif
|
|
this->wndShowWeb->hide();
|
|
}
|
|
|
|
int View_open_browser::template_open_browser(string str_link_doc) {
|
|
string cmd = cmd_xdg + string(_(str_link_doc.c_str())) + " &";
|
|
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_t>(size_s);
|
|
std::unique_ptr<char[]> buf(new char[ size ]);
|
|
std::snprintf(buf.get(), size, cmd_execute, response_user.c_str(), cmd.c_str());
|
|
cmd = string(buf.get(), buf.get() + size - 1);
|
|
}
|
|
return system(cmd.c_str());
|
|
|
|
}
|
|
void View_open_browser::open_help() {
|
|
global_lick_doc = const_link_doc;
|
|
temp_help_show();
|
|
}
|
|
|
|
View_about* View_open_browser::get_about() {
|
|
return obj_view_about;
|
|
}
|