diff --git a/source/ubl-settings-datetime.cc b/source/ubl-settings-datetime.cc index de338ad..841fbe8 100644 --- a/source/ubl-settings-datetime.cc +++ b/source/ubl-settings-datetime.cc @@ -15,9 +15,11 @@ int socket_ext_id_I = 0; int socket_trd_id_I = 0; string version_application = "2.1"; MainWindow* obj_main; -void wrapper_help_show() { +void wrapper_help_show(GtkWidget *self, char* link, gpointer user_data) { + if (self && user_data) {} + obj_main->global_lick_doc = link; obj_main->aboutWindows->hide(); - obj_main->help_show(); + obj_main->temp_help_show(); } CmdArgParser::CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help) @@ -344,7 +346,7 @@ void MainWindow::event() { btnCancelHelp->signal_clicked().connect([&]() {wndShowWeb->hide();}); chkAlwaysOpenHelp->signal_toggled().connect([&]() {flag_open_browser = true;}); btnReadHelp->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::open_browser)); - btnhelp->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::help_show)); + btnhelp->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::open_help)); btnHardwareTime->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::hardware_clock)); btnMessClose->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::gui_mess_close)); //cldrDate->signal_day_selected().connect(sigc::mem_fun(*this, &MainWindow::get_calendar)); @@ -354,7 +356,7 @@ void MainWindow::event() { cbRegion->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::append_zone)); cldrDate->signal_day_selected_double_click().connect(sigc::mem_fun(*this, &MainWindow::get_calendar)); btnAbout->signal_activate().connect([&]() {aboutWindows->show();}); - btnhelp->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::help_show)); + btnhelp->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::open_help)); btnLoadLocal->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::load_local_cfg)); btnLoadGlob->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::load_globl_cfg)); btnSaveLocalGlob->signal_activate().connect([&]() {save_global_local_cfg();}); @@ -411,7 +413,7 @@ void MainWindow::event_zone() { this->write_config(zone_text, "zone"); } -void MainWindow::help_show() { +void MainWindow::temp_help_show() { if (flag_open_browser == true) { this->open_browser(); } @@ -421,26 +423,31 @@ void MainWindow::help_show() { } +void MainWindow::open_help() { + global_lick_doc = const_link_doc; + temp_help_show(); +} + void MainWindow::open_browser() { #ifdef WEBKIT_FOUND - webkit_web_view_load_uri(one, link_doc); + webkit_web_view_load_uri(one, _(global_lick_doc.c_str())); wndWeb->show_all(); #else - this->template_open_browser(); + this->template_open_browser(global_lick_doc); #endif wndShowWeb->hide(); } -void MainWindow::template_open_browser() { - string cmd = cmd_xdg + string(_(link_doc)) + " &"; +void MainWindow::template_open_browser(string link_doc) { + string cmd = cmd_xdg + string(_(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_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 ); + std::snprintf(buf.get(), size, cmd_execute, response_user.c_str(), cmd.c_str()); + cmd = string(buf.get(), buf.get() + size - 1); } index_error = system(cmd.c_str()); } diff --git a/source/ubl-settings-datetime.h b/source/ubl-settings-datetime.h index e135d04..aa8322b 100644 --- a/source/ubl-settings-datetime.h +++ b/source/ubl-settings-datetime.h @@ -26,7 +26,7 @@ #endif -#define link_doc "https://wiki.ublinux.com/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-datetime" +#define const_link_doc "https://wiki.ublinux.com/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-datetime" #define cmd_xdg "xdg-open " #define cmd_execute "su -l %s -c \" DISPLAY=$DISPLAY %s \"" #define get_NTPSERVERS_DEFAULT "ubconfig --source default get [] NTPSERVERS_DEFAULT" @@ -255,6 +255,7 @@ class MainWindow : public Gtk::ApplicationWindow { int minute; string str_region_buff = ""; string str_zone_buff = ""; + string global_lick_doc = ""; int count_edit = 0; bool flag_global = false; bool flag_local = false; @@ -286,12 +287,14 @@ class MainWindow : public Gtk::ApplicationWindow { void set_hardware_clock(string &local, string &etc); void info_warning_error(int mess); void help_show(); + void temp_help_show(); + void open_help(); void get_hardware_clock(string cmd); void save_global_local_cfg(); void fill_in_reg_zone(string cmd); void load_globl_cfg(); void save_local_cfg(); - void template_open_browser(); + void template_open_browser(string link_doc); void event_zone(); bool focus_ntp(GdkEventFocus* event); bool check_config(string key, int key_save); @@ -364,6 +367,6 @@ private: Gtk::Widget *parent; }; -void wrapper_help_show(); +void wrapper_help_show(GtkWidget *self, char* link, gpointer user_data); void help(); #endif