master #116

Merged
asmeron merged 5 commits from Igor1/ubl-settings-datetime:master into develop 3 years ago

@ -15,9 +15,11 @@ int socket_ext_id_I = 0;
int socket_trd_id_I = 0; int socket_trd_id_I = 0;
string version_application = "2.1"; string version_application = "2.1";
MainWindow* obj_main; MainWindow* obj_main;
void wrapper_synopsis_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->aboutWindows->hide();
obj_main->synopsis_show(); obj_main->temp_help_show();
} }
CmdArgParser::CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help) CmdArgParser::CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help)
@ -300,7 +302,7 @@ void MainWindow::get_builder() {
builder->get_widget("btnSave", btnSave); builder->get_widget("btnSave", btnSave);
builder->get_widget("btnSettings", btnSettings); builder->get_widget("btnSettings", btnSettings);
builder->get_widget("btnLoad", btnLoad); builder->get_widget("btnLoad", btnLoad);
builder->get_widget("btnSynopsis", btnSynopsis); builder->get_widget("btnhelp", btnhelp);
builder->get_widget("btnAbout", btnAbout); builder->get_widget("btnAbout", btnAbout);
builder->get_widget("btnLoadLocal", btnLoadLocal); builder->get_widget("btnLoadLocal", btnLoadLocal);
builder->get_widget("btnLoadGlob", btnLoadGlob); builder->get_widget("btnLoadGlob", btnLoadGlob);
@ -340,11 +342,11 @@ void MainWindow::get_builder() {
} }
void MainWindow::event() { void MainWindow::event() {
g_signal_connect(G_OBJECT(aboutWindows->gobj()), "activate-link", G_CALLBACK(wrapper_synopsis_show), this); g_signal_connect(G_OBJECT(aboutWindows->gobj()), "activate-link", G_CALLBACK(wrapper_help_show), this);
btnCancelHelp->signal_clicked().connect([&]() {wndShowWeb->hide();}); btnCancelHelp->signal_clicked().connect([&]() {wndShowWeb->hide();});
chkAlwaysOpenHelp->signal_toggled().connect([&]() {flag_open_browser = true;}); chkAlwaysOpenHelp->signal_toggled().connect([&]() {flag_open_browser = true;});
btnReadHelp->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::open_browser)); btnReadHelp->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::open_browser));
btnSynopsis->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::synopsis_show)); btnhelp->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::open_help));
btnHardwareTime->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::hardware_clock)); btnHardwareTime->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::hardware_clock));
btnMessClose->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::gui_mess_close)); btnMessClose->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::gui_mess_close));
//cldrDate->signal_day_selected().connect(sigc::mem_fun(*this, &MainWindow::get_calendar)); //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)); 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)); cldrDate->signal_day_selected_double_click().connect(sigc::mem_fun(*this, &MainWindow::get_calendar));
btnAbout->signal_activate().connect([&]() {aboutWindows->show();}); btnAbout->signal_activate().connect([&]() {aboutWindows->show();});
btnSynopsis->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::synopsis_show)); btnhelp->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::open_help));
btnLoadLocal->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::load_local_cfg)); btnLoadLocal->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::load_local_cfg));
btnLoadGlob->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::load_globl_cfg)); btnLoadGlob->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::load_globl_cfg));
btnSaveLocalGlob->signal_activate().connect([&]() {save_global_local_cfg();}); btnSaveLocalGlob->signal_activate().connect([&]() {save_global_local_cfg();});
@ -411,7 +413,7 @@ void MainWindow::event_zone() {
this->write_config(zone_text, "zone"); this->write_config(zone_text, "zone");
} }
void MainWindow::synopsis_show() { void MainWindow::temp_help_show() {
if (flag_open_browser == true) { if (flag_open_browser == true) {
this->open_browser(); this->open_browser();
} }
@ -421,18 +423,23 @@ void MainWindow::synopsis_show() {
} }
void MainWindow::open_help() {
global_lick_doc = const_link_doc;
temp_help_show();
}
void MainWindow::open_browser() { void MainWindow::open_browser() {
#ifdef WEBKIT_FOUND #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(); wndWeb->show_all();
#else #else
this->template_open_browser(); this->template_open_browser(global_lick_doc);
#endif #endif
wndShowWeb->hide(); wndShowWeb->hide();
} }
void MainWindow::template_open_browser() { void MainWindow::template_open_browser(string link_doc) {
string cmd = cmd_xdg + string(_(link_doc)) + " &"; string cmd = cmd_xdg + string(_(link_doc.c_str())) + " &";
string buf = ""; string buf = "";
if (geteuid() == 0) { if (geteuid() == 0) {
string response_user = getlogin(); string response_user = getlogin();
@ -440,7 +447,7 @@ void MainWindow::template_open_browser() {
auto size = static_cast<size_t>(size_s); auto size = static_cast<size_t>(size_s);
std::unique_ptr<char[]> buf(new char[ size ]); std::unique_ptr<char[]> buf(new char[ size ]);
std::snprintf(buf.get(), size, cmd_execute, response_user.c_str(), cmd.c_str()); std::snprintf(buf.get(), size, cmd_execute, response_user.c_str(), cmd.c_str());
cmd = std::string( buf.get(), buf.get() + size - 1 ); cmd = string(buf.get(), buf.get() + size - 1);
} }
index_error = system(cmd.c_str()); index_error = system(cmd.c_str());
} }
@ -843,7 +850,7 @@ bool MainWindow::focus_ntp_text() {
bool flag_error = false; bool flag_error = false;
bool flag_error_check_ntp = false; bool flag_error_check_ntp = false;
string str_ntp = txtNtpServer->get_text(); string str_ntp = txtNtpServer->get_text();
flag_error_check_ntp = this->check_ntp(str_ntp); flag_error_check_ntp = this->wrapper_check_ntp(str_ntp);
for (const auto &simvol: array_simvol) { for (const auto &simvol: array_simvol) {
if (str_ntp.find(simvol) != std::string::npos) { if (str_ntp.find(simvol) != std::string::npos) {
flag_error= true; flag_error= true;
@ -886,19 +893,35 @@ vector<int> MainWindow::find_all(string &str_ntp, string substr) {
return sub_index; return sub_index;
} }
bool MainWindow::check_ntp(string &str_ntp) { bool MainWindow::check_is_num_ntp(string &str_ntp) {
vector<int> sub_index = this->find_all(str_ntp, "."); int code_ascii = 0;
if (sub_index.size() == 1) { bool flag_is_num = false;
int index_point = sub_index[0]; for (size_t index = 0; index < str_ntp.length(); index++) {
int len_str_ntp = str_ntp.length(); code_ascii = static_cast<int>(str_ntp[index]);
if (((len_str_ntp-index_point) >= 2) && (index_point > 2)) { if (code_ascii >= 48 && code_ascii <= 57 ) {
return false; flag_is_num = true;
break;
}
}
return flag_is_num;
}
bool MainWindow::check_is_string_ntp(string &str_ntp) {
int code_ascii = 0;
bool flag_is_str = false;
for (size_t index = 0; index < str_ntp.length(); index++) {
code_ascii = static_cast<int>(str_ntp[index]);
if ((code_ascii >= 65 && code_ascii <= 90) || (code_ascii >= 97 && code_ascii <= 122)) {
flag_is_str = true;
break;
} }
else {
return true;
} }
return flag_is_str;
} }
else if (sub_index.size() == 3) {
bool MainWindow::validate_ip_address(string &str_ntp) {
vector<int> sub_index = this->find_all(str_ntp, ".");
if (sub_index.size() == 3) {
int index_str_ntp = sub_index[0]; int index_str_ntp = sub_index[0];
int index_str_ntp_1 = sub_index[1]; int index_str_ntp_1 = sub_index[1];
int index_str_ntp_2 = sub_index[2]; int index_str_ntp_2 = sub_index[2];
@ -942,7 +965,60 @@ bool MainWindow::check_ntp(string &str_ntp) {
return true; return true;
} }
return false; return false;
}
bool MainWindow::validate_domen(string &str_ntp) {
vector<int> sub_index = this->find_all(str_ntp, ".");
if (sub_index.size() != 0) {
int index_point = sub_index[sub_index.size()-1];
int len_str_ntp = str_ntp.length();
if (((len_str_ntp-index_point) >= 2) && (index_point > 2)) {
return false;
}
else {
return true;
}
}
else {
return true;
}
return false;
}
bool MainWindow::check_ntp(string &str_ntp) {
bool flag_is_str = this->check_is_string_ntp(str_ntp);
bool flag_is_num = this->check_is_num_ntp(str_ntp);
if (flag_is_str) {
return this->validate_domen(str_ntp);
}
else if (flag_is_str && flag_is_num == false) {
return this->validate_ip_address(str_ntp);
}
else {
return false;
}
return false;
}
bool MainWindow::wrapper_check_ntp(string &str_ntp) {
bool flag_check_error_ntp = false;
if (str_ntp.find(",") != string::npos) {
vector<string> vec_ntp = split(str_ntp, ',');
for (string& str_split_ntp: vec_ntp) {
if (str_split_ntp.length() == 0) {
return true;
}
flag_check_error_ntp = this->check_ntp(str_split_ntp);
if (flag_check_error_ntp) {
return flag_check_error_ntp;
}
}
return false;
}
else {
return this->check_ntp(str_ntp);
}
return false;
} }
struct MainWindow::Result<string> MainWindow::wrapper_call(string cmd) { struct MainWindow::Result<string> MainWindow::wrapper_call(string cmd) {

@ -26,7 +26,7 @@
#endif #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_xdg "xdg-open "
#define cmd_execute "su -l %s -c \" DISPLAY=$DISPLAY %s \"" #define cmd_execute "su -l %s -c \" DISPLAY=$DISPLAY %s \""
#define get_NTPSERVERS_DEFAULT "ubconfig --source default get [] NTPSERVERS_DEFAULT" #define get_NTPSERVERS_DEFAULT "ubconfig --source default get [] NTPSERVERS_DEFAULT"
@ -207,7 +207,7 @@ class MainWindow : public Gtk::ApplicationWindow {
Gtk::MenuItem *btnLoadGlob; Gtk::MenuItem *btnLoadGlob;
Gtk::MenuItem *btnLoadLocal; Gtk::MenuItem *btnLoadLocal;
Gtk::MenuItem *btnAbout; Gtk::MenuItem *btnAbout;
Gtk::MenuItem *btnSynopsis; Gtk::MenuItem *btnhelp;
Gtk::HeaderBar *headerBar; Gtk::HeaderBar *headerBar;
Gtk::Label *lblHeader; Gtk::Label *lblHeader;
Gtk::Label *lblHW; Gtk::Label *lblHW;
@ -255,6 +255,7 @@ class MainWindow : public Gtk::ApplicationWindow {
int minute; int minute;
string str_region_buff = ""; string str_region_buff = "";
string str_zone_buff = ""; string str_zone_buff = "";
string global_lick_doc = "";
int count_edit = 0; int count_edit = 0;
bool flag_global = false; bool flag_global = false;
bool flag_local = false; bool flag_local = false;
@ -285,13 +286,15 @@ class MainWindow : public Gtk::ApplicationWindow {
void log_mess_error(string &cmd); void log_mess_error(string &cmd);
void set_hardware_clock(string &local, string &etc); void set_hardware_clock(string &local, string &etc);
void info_warning_error(int mess); void info_warning_error(int mess);
void synopsis_show(); void help_show();
void temp_help_show();
void open_help();
void get_hardware_clock(string cmd); void get_hardware_clock(string cmd);
void save_global_local_cfg(); void save_global_local_cfg();
void fill_in_reg_zone(string cmd); void fill_in_reg_zone(string cmd);
void load_globl_cfg(); void load_globl_cfg();
void save_local_cfg(); void save_local_cfg();
void template_open_browser(); void template_open_browser(string link_doc);
void event_zone(); void event_zone();
bool focus_ntp(GdkEventFocus* event); bool focus_ntp(GdkEventFocus* event);
bool check_config(string key, int key_save); bool check_config(string key, int key_save);
@ -306,8 +309,13 @@ class MainWindow : public Gtk::ApplicationWindow {
void settings(); void settings();
void flag_block_gui(); void flag_block_gui();
void add_CSS(); void add_CSS();
bool check_is_string_ntp(string &str_ntp);
bool check_is_num_ntp(string &str_ntp);
void get_builder(); void get_builder();
void event(); void event();
bool wrapper_check_ntp(string &str_ntp);
bool validate_domen(string &str_ntp);
bool validate_ip_address(string &str_ntp);
void gui_mess_close(); void gui_mess_close();
bool focus_ntp_text() ; bool focus_ntp_text() ;
void event_entry_cbDhcp(); void event_entry_cbDhcp();
@ -364,6 +372,6 @@ private:
Gtk::Widget *parent; Gtk::Widget *parent;
}; };
void wrapper_synopsis_show(); void wrapper_help_show(GtkWidget *self, char* link, gpointer user_data);
void help(); void help();
#endif #endif

@ -271,7 +271,7 @@
<property name="reserve-toggle-size">False</property> <property name="reserve-toggle-size">False</property>
<property name="rect-anchor-dy">4</property> <property name="rect-anchor-dy">4</property>
<child> <child>
<object class="GtkMenuItem" id="btnSynopsis"> <object class="GtkMenuItem" id="btnhelp">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">Help</property> <property name="label" translatable="yes">Help</property>

Loading…
Cancel
Save