diff --git a/Makefile b/Makefile index f68f4dc..bb367fd 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ all: init build init: @echo "Initialize ..."; \ - sed -r "s/(version_application = ).*/\1\"$$(grep 'VERSION' VERSION.md | cut -d" " -f2)\";/" -i source/ubl-settings-datetime.h; \ + sed -r "s/(version_application = ).*/\1\"$$(grep 'VERSION' VERSION.md | cut -d" " -f2)\";/" -i source/ubl-settings-datetime.cc; \ echo "-- Build path: ${CMAKE_BUILD_DIR}" depend: diff --git a/README.md b/README.md index aa70440..000c257 100644 --- a/README.md +++ b/README.md @@ -32,10 +32,21 @@ $ sudo make uninstall # Usage ```sh $ ubl-settings-datetime --help -Usage: ubl-settings-datetime [--lock-timezone] [--lock-ntp] [--lock-datetime] [--lock-update] +GTK settings datetime for UBLinux + +Usage: ubl-settings-datetime [OPTIONS...] Options: - --lock-timezone Disable timezone field editing - --lock-ntp Disable ntp field editing - --lock-datetime Disable datetime field editing - --lock-update Disable save changes + -h, --help Show this help + -V, --version Show package version + --lock-datetime Locking date and time changes + --lock-timezone Locking time zone change + --lock-ntp-mode Locking the NTP mode selection + --lock-ntp-edit Blocking the list of NTP servers + --lock-save Locking of local and global configuration saving + --lock-save-local Locking the local configuration save + --lock-save-global Locking the global configuration save + --lock-load-global Lock load global configuration + +$ ubl-settings-datetime --version +ubl-settings-datetime version: x.xx ``` diff --git a/screenshot/screenshot.png b/screenshot/screenshot.png index 083519f..967227a 100644 Binary files a/screenshot/screenshot.png and b/screenshot/screenshot.png differ diff --git a/source/main.cc b/source/main.cc index 0052a16..05180f4 100644 --- a/source/main.cc +++ b/source/main.cc @@ -46,9 +46,9 @@ int main(int argc, char* argv[]) { } else if (str_argv.find("-") != std::string::npos || argc == 1){ int len_argv = 1; + pars_flag(1, argc, argv); auto app = Gtk::Application::create(len_argv, argv, "org.gtkmm.example.plug"); auto builder = Gtk::Builder::create_from_file(path_glade + "ubl-settings-datetime.glade"); - pars_flag(1, argc, argv); MainWindow* wnd = nullptr; builder->get_widget_derived("window", wnd); auto r = app->run(*wnd); @@ -67,7 +67,12 @@ void pars_flag(int index_start, int argc, char* argv[]){ str_argv = argv[i]; if (str_argv == "--help" || str_argv == "-h"){ help(); - exit (1); + exit(1); + } + else if (str_argv == "--version" || str_argv == "-v"){ + string version = string(gettext("ubl-settings-datetime version: ")) + version_application + "\n"; + cout << version.c_str(); + exit(1); } else if (str_argv == "--lock-datetime"){ flag_datetime = true; @@ -83,6 +88,8 @@ void pars_flag(int index_start, int argc, char* argv[]){ } else if (str_argv == "--lock-save"){ flag_save = true; + flag_save_local = true; + flag_save_global = true; } else if (str_argv == "--lock-save-local"){ flag_save_local = true; diff --git a/source/ubl-settings-datetime.cc b/source/ubl-settings-datetime.cc index b01728f..f212379 100644 --- a/source/ubl-settings-datetime.cc +++ b/source/ubl-settings-datetime.cc @@ -17,6 +17,7 @@ bool flag_save_global = false; bool flag_load_global = false; int socket_ext_id_I = 0; int socket_trd_id_I = 0; +string version_application = "1.4"; CmdArgParser::CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help) : Glib::OptionGroup{p_name, p_description, p_help} { @@ -53,32 +54,33 @@ MainWindow::MainWindow(Glib::RefPtr const& builder) { void MainWindow::settings() { map_error["xdg-open https://wiki.ublinux.ru/ru/home"] = string(_(": \"xdg-open\"")); - map_error["/usr/bin/ubconfig --default --source system get clock ZONE"] = string(_(": \"Time Zone\"")); + map_error["ubconfig --default --source system get clock ZONE"] = string(_(": \"Time Zone\"")); map_error["hwclock --systohc"] = string(_(": \"Hardware time\"")); - map_error["/usr/bin/ubconfig --default --source system get network NTPSERVERS"] = string(_(": \"NTP\"")); - map_error["/usr/bin/ubconfig --source=default get NTPSERVERS_DEFAULT"] = string(_(": \"NTP\"")); - map_error["/usr/bin/ubconfig --default --source system get clock HWCLOCK_SYNC"] = string(_(": \"Hardware time\"")); - map_error["/usr/bin/ubconfig --default --source global get network NTPSERVERS"] = string(_(": \"NTP\"")); - map_error["/usr/bin/ubconfig --default --source global get clock ZONE"] = string(_(": \"Time Zone\"")); - map_error["/usr/bin/ubconfig --default --source global get clock HWCLOCK_SYNC"] = string(_(": \"Hardware time\"")); - map_error["/usr/bin/ubconfig --source global get clock HWCLOCK_SYNC"] = string(_(": \"Hardware time\"")); - map_error["/usr/bin/ubconfig --target system set clock ZONE="] = string(_(": \"Time Zone\"")); - map_error["/usr/bin/ubconfig --target system set network NTPSERVERS=default"] = string(_(": \"NTP\"")); - map_error["/usr/bin/ubconfig --target system set network NTPSERVERS=dhcp"] = string(_(": \"NTP\"")); - map_error["/usr/bin/ubconfig --target system set network NTPSERVERS=\""] = string(_(": \"NTP\"")); - map_error["/usr/bin/ubconfig --target system remove network NTPSERVERS"] = string(_(": \"NTP\"")); - map_error["/usr/bin/ubconfig --target system set clock HWCLOCK_SYNC=localtime"] = string(_(": \"Hardware time\"")); - map_error["/usr/bin/ubconfig --target system set clock HWCLOCK_SYNC=utc"] = string(_(": \"Hardware time\"")); - map_error["/usr/bin/ubconfig --target global set clock ZONE="] = string(_(": \"Time Zone\"")); - map_error["/usr/bin/ubconfig --target global set network NTPSERVERS=default"] = string(_(": \"NTP\"")); - map_error["/usr/bin/ubconfig --target global set network NTPSERVERS=dhcp"] = string(_(": \"NTP\"")); - map_error["/usr/bin/ubconfig --target global set network NTPSERVERS=\""] = string(_(": \"NTP\"")); - map_error["/usr/bin/ubconfig --target global remove network NTPSERVERS"] = string(_(": \"NTP\"")); - map_error["/usr/bin/ubconfig --target global set clock HWCLOCK_SYNC=localtime"] = string(_(": \"Hardware time\"")); - map_error["/usr/bin/ubconfig --target global set clock HWCLOCK_SYNC=utc"] = string(_(": \"Hardware time\"")); + map_error["ubconfig --default --source system get network NTPSERVERS"] = string(_(": \"NTP\"")); + map_error["ubconfig --source=default get NTPSERVERS_DEFAULT"] = string(_(": \"NTP\"")); + map_error["ubconfig --default --source system get clock HWCLOCK_SYNC"] = string(_(": \"Hardware time\"")); + map_error["ubconfig --default --source global get network NTPSERVERS"] = string(_(": \"NTP\"")); + map_error["ubconfig --default --source global get clock ZONE"] = string(_(": \"Time Zone\"")); + map_error["ubconfig --default --source global get clock HWCLOCK_SYNC"] = string(_(": \"Hardware time\"")); + map_error["ubconfig --source global get clock HWCLOCK_SYNC"] = string(_(": \"Hardware time\"")); + map_error["ubconfig --target system set clock ZONE="] = string(_(": \"Time Zone\"")); + map_error["ubconfig --target system set network NTPSERVERS=default"] = string(_(": \"NTP\"")); + map_error["ubconfig --target system set network NTPSERVERS=dhcp"] = string(_(": \"NTP\"")); + map_error["ubconfig --target system set network NTPSERVERS=\""] = string(_(": \"NTP\"")); + map_error["ubconfig --target system remove network NTPSERVERS"] = string(_(": \"NTP\"")); + map_error["ubconfig --target system set clock HWCLOCK_SYNC=localtime"] = string(_(": \"Hardware time\"")); + map_error["ubconfig --target system set clock HWCLOCK_SYNC=utc"] = string(_(": \"Hardware time\"")); + map_error["ubconfig --target global set clock ZONE="] = string(_(": \"Time Zone\"")); + map_error["ubconfig --target global set network NTPSERVERS=default"] = string(_(": \"NTP\"")); + map_error["ubconfig --target global set network NTPSERVERS=dhcp"] = string(_(": \"NTP\"")); + map_error["ubconfig --target global set network NTPSERVERS=\""] = string(_(": \"NTP\"")); + map_error["ubconfig --target global remove network NTPSERVERS"] = string(_(": \"NTP\"")); + map_error["ubconfig --target global set clock HWCLOCK_SYNC=localtime"] = string(_(": \"Hardware time\"")); + map_error["ubconfig --target global set clock HWCLOCK_SYNC=utc"] = string(_(": \"Hardware time\"")); + map_error["ubconfig --source default get [] NTPSERVERS_DEFAULT"] = string(_(": \"NTP\"")); map_error["date +%Y%m%d -s \""] = string(_(": \"Date\"")); map_error["date +%T -s \""] = string(_(": \"Date\"")); - map_error["/usr/bin/ubconfig --source default get clock HWCLOCK_SYNC"] = string(_(": \"Hardware time\"")); + map_error["ubconfig --source default get clock HWCLOCK_SYNC"] = string(_(": \"Hardware time\"")); this->get_builder(); this->add_CSS(); ubl_make_plugs(boxSave,boxButton, socket_ext_id_I, socket_trd_id_I); @@ -86,7 +88,7 @@ void MainWindow::settings() { month = 0; day = 0; this->lacalization(); - if (this->check_root() == 0) { + if (geteuid() == 0) { numTimeHrs->set_range(0, 23); numTimeMin->set_range(0, 59); numTimeHrs->set_increments(1.0, 1.0); @@ -97,31 +99,15 @@ void MainWindow::settings() { this->event(); this->parse_text_date(); this->load_local_cfg(); + string cmd = "ubconfig --source default get [] NTPSERVERS_DEFAULT"; + default_get_dhcp = this->get_ubconfig_value(cmd); + this->str_remove(default_get_dhcp, "\""); } else { lblHW->set_sensitive(false); - cbHw->set_sensitive(false); + boxWidgetFunc->set_sensitive(false); boxButton->set_sensitive(false); - boxSave->set_sensitive(false); - btnLoad->set_sensitive(false); - numTimeHrs->set_sensitive(false); - numTimeMin->set_sensitive(false); - lblTime->set_sensitive(false); - lblData->set_sensitive(false); - txtDate->set_sensitive(false); - btnChooseDate->set_sensitive(false); - btnUpdateDateTime->set_sensitive(false); - btnHardwareTime->set_sensitive(false); - cbRegion->set_sensitive(false); - cbZone->set_sensitive(false); - lblReg->set_sensitive(false); - lblZone->set_sensitive(false); - lblTimeZone->set_sensitive(false); - lblSynchronizebChkGLob->set_sensitive(false); - cbDhcp->set_sensitive(false); - txtNtpServer->set_sensitive(false); - lblDateTimeSetting->set_sensitive(false); - btnBoxAboutDialog->set_visible(false); + btnSave->set_sensitive(false); this->event(); imgInfo->set_from_icon_name("ru.ublinux.ubl-settings-datetime.warning", Gtk::ICON_SIZE_MENU); info_status_app("boxInfoMessError"); @@ -129,16 +115,6 @@ void MainWindow::settings() { } } - -int MainWindow::check_root() { - if (geteuid() != 0) { - lblMessageSudo->set_text(_("The program must be run as root")); - windowMessSudo->show(); - return 1; - } - return 0; -} - void MainWindow::lacalization() { time_t now = time(0); tm *ltm = localtime(&now); @@ -153,26 +129,45 @@ void MainWindow::lacalization() { lblLoad->set_label(_("Load")); txtDate->set_tooltip_text(_("Date of\nFormat: DD.MM.YYYY")); txtNtpServer->set_tooltip_text(_("Enter the name of the ntp-server or its ip-address.\nWhen entering multiple addresses, separate them with commas.")); - lblSynchronizebChkGLob->set_text(_("Synchronize via NTP:")); + lblSynchronizebChkGLob->set_text(_("Synchronize via NTP")); cbDhcp->append(_("Default")); cbDhcp->append(_("DHCP")); cbDhcp->append(_("Manual")); cbDhcp->append(_("Disabled")); lblDateTimeSetting->set_text(_("Current date and time")); lblHead->set_text(_("Setting the date and time")); - lblTime->set_text(_("Time")); - lblData->set_text(_("Date")); + lblTime->set_text(_("Time:")); + lblData->set_text(_("Date:")); lblTimeZone->set_text(_("Time zone")); - lblReg->set_text(_("Region")); - lblZone->set_text(_("Zone")); + lblReg->set_text(_("Region:")); + lblZone->set_text(_("Zone:")); lblSynchronizeBtn->set_text(_("Sync by")); lblHeader->set_text(_("ubl-settings-datetime")); - windowMessSudo->set_title(_("Warning!")); windowMessDchp->set_title(_("Warning!")); lblTimeBios->set_text(_("Synchronize hardware time")); lblHW->set_text(_("Synchronize hardware time:")); - cbHw->append(_("Local time")); - cbHw->append(_("UTC time")); + array_hw_local[0] = _("UTC time"); + array_hw_local[1] = _("Local time"); + array_hw[0] = "utc"; + array_hw[1] = "localtime"; + this->bubble_sort(array_hw, array_hw_local, 2); + cbHw->append(array_hw_local[0]); + cbHw->append(array_hw_local[1]); +} + +void MainWindow::bubble_sort(string arr[],string arr_local[], int len_arr) { + while(len_arr--) { + bool swapped = false; + for(int i = 0; i < len_arr; i++) { + if(arr_local[i] > arr_local[i + 1]) { + swap(arr[i], arr[i + 1]); + swap(arr_local[i], arr_local[i + 1]); + swapped = true; + } + } + if(swapped == false) + break; + } } void MainWindow::flag_block_gui() { @@ -202,14 +197,19 @@ void MainWindow::flag_block_gui() { if (flag_load_global == true) { btnLoadGlob->set_sensitive(false); } + if (flag_save_local == true && flag_save_global == true) { + btnSave->set_sensitive(false); + } if (flag_save == true) { btnSave->set_sensitive(false); } if (flag_save_local == true) { btnSaveLocal->set_sensitive(false); + btnSaveLocalGlob->set_sensitive(false); } if (flag_save_global == true) { btnSaveGlob->set_sensitive(false); + btnSaveLocalGlob->set_sensitive(false); } } @@ -225,10 +225,12 @@ void MainWindow::add_CSS() { Glib::RefPtr boxButton_css = boxButton->get_style_context(); Glib::RefPtr boxSave_css = boxSave->get_style_context(); Glib::RefPtr headerBar_css = headerBar->get_style_context(); + if (socket_trd_id_I == 0 && socket_ext_id_I == 0){ + boxButton_css->add_class("bkim_no_plug"); + boxSave_css->add_class("bkim_no_plug"); + } + lblHead_css->add_class("textHead"); - boxButton_css->add_class("bkimButton"); - boxSave_css->add_class("bkimButton"); - headerBar_css->add_class("bkimHeadBar"); } @@ -266,7 +268,6 @@ void MainWindow::get_builder() { builder->get_widget("lblSynchronizeBtn", lblSynchronizeBtn); builder->get_widget("lblTimeBios", lblTimeBios); builder->get_widget("btnHardwareTime",btnHardwareTime); - builder->get_widget("windowMessSudo",windowMessSudo); builder->get_widget("lblMessageSudo", lblMessageSudo); builder->get_widget("btnMessCloseSudo",btnMessCloseSudo); builder->get_widget("lblSave", lblSave); @@ -300,19 +301,14 @@ void MainWindow::get_builder() { builder->get_widget("imgLoad", imgLoad); builder->get_widget("imgSettings", imgSettings); builder->get_widget("imgSave", imgSave); + builder->get_widget("boxWidgetFunc", boxWidgetFunc); + } void MainWindow::gui_exit() { exit(1); } -bool MainWindow::gui_exit_2(GdkEventAny* event) { - if (event != NULL) { - } - exit(1); - return true; -} - void MainWindow::event() { btnHardwareTime->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::hardware_clock)); btnMessClose->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::gui_mess_close)); @@ -323,7 +319,6 @@ void MainWindow::event() { cbDhcp->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::event_entry_cbDhcp)); 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)); - windowMessSudo->signal_delete_event().connect(sigc::mem_fun(*this, &MainWindow::gui_exit_2)); btnAbout->signal_activate().connect([&]() {aboutWindows->show();}); btnSynopsis->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::synopsis_show)); btnLoadLocal->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::load_local_cfg)); @@ -335,65 +330,81 @@ void MainWindow::event() { void MainWindow::synopsis_show() { int start_error = error_info; - wrapper_system("xdg-open https://wiki.ublinux.ru/ru/home", "&"); - //gtk_show_uri_on_window(NULL, "https://wiki.ublinux.ru/ru/home", 0, 0); + string cmd = "xdg-open " + string(_("https://wiki.ublinux.com/ru/Программное_обеспечение/Программы_и_утилиты/Все/")) + app_name; + wrapper_system(cmd, "&"); if (start_error != error_info) { error_info = start_error; } } void MainWindow::load_local_cfg() { - string cmd = "/usr/bin/ubconfig --default --source system get clock ZONE"; + string cmd = "ubconfig --default --source system get clock ZONE"; this->fill_in_reg_zone(cmd); this->update_hour_minute(); this->update_calendar(); - string cmd_get_dhcp = "/usr/bin/ubconfig --default --source system get network NTPSERVERS"; - string cmd_default_get_dhcp = "/usr/bin/ubconfig --source=default get NTPSERVERS_DEFAULT"; + string cmd_get_dhcp = "ubconfig --default --source system get network NTPSERVERS"; + string cmd_default_get_dhcp = "ubconfig --source default get [] NTPSERVERS_DEFAULT"; this->entry_dhcp_mess(cmd_get_dhcp, cmd_default_get_dhcp); - string hw = "/usr/bin/ubconfig --default --source system get clock HWCLOCK_SYNC"; - this->entry_hardware_clock(hw); + string hw = "ubconfig --default --source system get clock HWCLOCK_SYNC"; + this->get_hardware_clock(hw); + flag_load = false; info_warning_error(0); } void MainWindow::load_globl_cfg() { - string cmd_get_dhcp = "/usr/bin/ubconfig --default --source global get network NTPSERVERS"; - string cmd_default_get_dhcp = "/usr/bin/ubconfig --source=default get NTPSERVERS_DEFAULT"; + string cmd_get_dhcp = "ubconfig --default --source global get network NTPSERVERS"; + string cmd_default_get_dhcp = "ubconfig --source default get [] NTPSERVERS_DEFAULT"; this->entry_dhcp_mess(cmd_get_dhcp, cmd_default_get_dhcp); - string cmd_zone = "/usr/bin/ubconfig --default --source global get clock ZONE"; + string cmd_zone = "ubconfig --default --source global get clock ZONE"; this->fill_in_reg_zone(cmd_zone); - string hw = "/usr/bin/ubconfig --source global get clock HWCLOCK_SYNC"; - this->entry_hardware_clock(hw); + string hw = "ubconfig --source global get clock HWCLOCK_SYNC"; + this->get_hardware_clock(hw); + flag_load = true; info_warning_error(1); } void MainWindow::save_local_cfg() { - string cmd_zone = "/usr/bin/ubconfig --target system set clock ZONE="; + string cmd_zone = "ubconfig --target system set clock ZONE="; this->enter_zone(cmd_zone); - string cmd_default = "/usr/bin/ubconfig --target system set network NTPSERVERS=default"; - string cmd_dhcp = "/usr/bin/ubconfig --target system set network NTPSERVERS=dhcp"; - string cmd_set_ntp = "/usr/bin/ubconfig --target system set network NTPSERVERS=\""; - string remove_ntp = "/usr/bin/ubconfig --target system remove network NTPSERVERS"; + string cmd_default = "ubconfig --target system set network NTPSERVERS=default"; + string cmd_dhcp = "ubconfig --target system set network NTPSERVERS=dhcp"; + string cmd_set_ntp = "ubconfig --target system set network NTPSERVERS=\""; + string remove_ntp = "ubconfig --target system remove network NTPSERVERS"; this->save_Dhcp(cmd_default, cmd_dhcp, remove_ntp, cmd_set_ntp); - string local = "/usr/bin/ubconfig --target system set clock HWCLOCK_SYNC=localtime"; - string hw = "/usr/bin/ubconfig --target system set clock HWCLOCK_SYNC=utc"; - this->entry_hardware_clock(hw); + string local = "ubconfig --target system set clock HWCLOCK_SYNC=localtime"; + string hw = "ubconfig --target system set clock HWCLOCK_SYNC=utc"; + this->set_hardware_clock(local, hw); info_warning_error(2); } void MainWindow::save_global_cfg() { - string cmd = "/usr/bin/ubconfig --target global set clock ZONE="; + string cmd = "ubconfig --target global set clock ZONE="; this->enter_zone(cmd); - string cmd_default = "/usr/bin/ubconfig --target global set network NTPSERVERS=default"; - string cmd_dhcp = "/usr/bin/ubconfig --target global set network NTPSERVERS=dhcp"; - string cmd_set_ntp = "/usr/bin/ubconfig --target global set network NTPSERVERS=\""; - string remove_ntp = "/usr/bin/ubconfig --target global remove network NTPSERVERS"; + string cmd_default = "ubconfig --target global set network NTPSERVERS=default"; + string cmd_dhcp = "ubconfig --target global set network NTPSERVERS=dhcp"; + string cmd_set_ntp = "ubconfig --target global set network NTPSERVERS=\""; + string remove_ntp = "ubconfig --target global remove network NTPSERVERS"; this->save_Dhcp(cmd_default, cmd_dhcp, remove_ntp, cmd_set_ntp); - string local = "/usr/bin/ubconfig --target global set clock HWCLOCK_SYNC=localtime"; - string hw = "/usr/bin/ubconfig --target global set clock HWCLOCK_SYNC=utc"; - this->hardware_clock_global(local, hw); + string local = "ubconfig --target global set clock HWCLOCK_SYNC=localtime"; + string hw = "ubconfig --target global set clock HWCLOCK_SYNC=utc"; + this->set_hardware_clock(local, hw); info_warning_error(3); } +string MainWindow::get_ubconfig_value(string &cmd){ + struct Result obj_result = this->wrapper_call(cmd); + if (obj_result.error == 0) { + return obj_result.response; + } + else { + if (obj_result.error != 0) { + warning_info-= 1; + } + return ""; + } + +} + void MainWindow::save_global_local_cfg() { string cmd = ""; string cmd_default = ""; @@ -485,25 +496,40 @@ void MainWindow::log_mess_error(string &cmd){ } } -void MainWindow::hardware_clock_global(string &local, string &etc) { - int index = cbHw->get_active_row_number(); - if (index == 0) { - wrapper_system(local, "&"); - } - else if (index == 1) { - wrapper_system(etc, "&"); +void MainWindow::set_hardware_clock(string &local, string &etc) { + string str_hw = cbHw->get_active_text(); + for (int index = 0; index < 2; index++) { + if (array_hw_local[index] == str_hw){ + if (array_hw[index] == "utc"){ + wrapper_system(etc, "&"); + } + else{ + wrapper_system(local, "&"); + } + } } } -void MainWindow::entry_hardware_clock(string &cmd) { +void MainWindow::get_hardware_clock(string &cmd) { int error = warning_info; struct Result obj_result = this->wrapper_call(cmd); if (obj_result.error == 0) { if (obj_result.response.find("localtime") != string::npos) { - cbHw->set_active(0); + if (array_hw[0] == "localtime"){ + cbHw->set_active(0); + } + else{ + cbHw->set_active(1); + } + } else if (obj_result.response.find("utc") != string::npos) { - cbHw->set_active(1); + if (array_hw[0] == "utc"){ + cbHw->set_active(0); + } + else{ + cbHw->set_active(1); + } } else { cbHw->set_active(-1); @@ -682,24 +708,36 @@ void MainWindow::event_entry_cbDhcp() { cbDhcp->set_active(0); } else if (activ_index == 0) { - txtNtpServer->set_text(""); - btnUpdateDateTime->set_sensitive(false); + txtNtpServer->set_text(default_get_dhcp); txtNtpServer->set_sensitive(false); } else if (activ_index == 1) { - btnUpdateDateTime->set_sensitive(false); + // btnUpdateDateTime->set_sensitive(false); txtNtpServer->set_sensitive(false); txtNtpServer->set_text(""); } else if (activ_index == 2) { + txtNtpServer->set_text(""); if (flag_ntp_edit == false) { + string cmd = ""; + if (flag_load == false) { + cmd = "ubconfig --default --source system get network NTPSERVERS"; + } + else{ + cmd = "ubconfig --default --source global get network NTPSERVERS"; + } + string response = this->get_ubconfig_value(cmd); + if (response != "dhcp" && response != "default"){ + txtNtpServer->set_text(response); + } + txtNtpServer->set_sensitive(true); } } else if (activ_index == 3) { txtNtpServer->set_text(""); txtNtpServer->set_sensitive(false); - btnUpdateDateTime->set_sensitive(true); + // btnUpdateDateTime->set_sensitive(true); } } @@ -731,7 +769,7 @@ void MainWindow::entry_dhcp_mess(string cmd_get_dhcp, string cmd_default_get_dhc struct Result obj_result = this->wrapper_call(cmd); if (obj_result.error== 0) { string str_dhcp = obj_result.response; - btnUpdateDateTime->set_sensitive(false); + // btnUpdateDateTime->set_sensitive(false); str_dhcp = str_dhcp.substr(str_dhcp.find("=")+1,str_dhcp.length()); str_dhcp = str_dhcp.substr(0,str_dhcp.find("\n")); if (str_dhcp == "dhcp") { @@ -740,7 +778,7 @@ void MainWindow::entry_dhcp_mess(string cmd_get_dhcp, string cmd_default_get_dhc txtNtpServer->set_sensitive(false); } else if (str_dhcp == "default") { - btnUpdateDateTime->set_sensitive(false); + // btnUpdateDateTime->set_sensitive(false); cbDhcp->set_active(0); cmd = cmd_default_get_dhcp; struct Result obj_result = this->wrapper_call(cmd); @@ -755,7 +793,7 @@ void MainWindow::entry_dhcp_mess(string cmd_get_dhcp, string cmd_default_get_dhc } } else { - btnUpdateDateTime->set_sensitive(false); + // btnUpdateDateTime->set_sensitive(false); if (str_dhcp == "") { lblMessage->set_text(_("Enter DHCP!")); windowMessDchp->show(); @@ -777,7 +815,7 @@ void MainWindow::entry_dhcp_mess(string cmd_get_dhcp, string cmd_default_get_dhc cbDhcp->set_active(3); txtNtpServer->set_text(""); txtNtpServer->set_sensitive(false); - btnUpdateDateTime->set_sensitive(true); + // btnUpdateDateTime->set_sensitive(true); warning_info -= 1; } } @@ -1056,7 +1094,7 @@ void MainWindow::update_time_date() { string str_data_entry = txtDate->get_text(); if (str_data == str_data_entry) { cmd = "date +%Y%m%d -s \"" + to_string(year)+ - str_month+str_day + "\""; + str_month + str_day + "\""; wrapper_system(cmd); txtDate->set_text(str_data); year = 0; @@ -1296,11 +1334,23 @@ SettingsPlug::SettingsPlug(::Window p_socketID, Glib::RefPtr build } void help() { - g_print(gettext("Usage: ubl-settings-datetime [--lock-timezone] [--lock-ntp] [--lock-datetime] [--lock-update]\n")); - g_print(gettext("Options:\n")); - g_print(gettext(" --lock-timezone Disable timezone field editing\n")); - g_print(gettext(" --lock-ntp Disable ntp field editing\n")); - g_print(gettext(" --lock-datetime Disable datetime field editing\n")); - g_print(gettext(" --lock-update Disable save changes\n")); + string version = string(gettext("ubl-settings-datetime version: ")) + version_application + "\n"; + cout << version.c_str(); + string help; + help = "GTK settings datetime for UBLinux\n\n" + "Usage: ubl-settings-datetime [OPTIONS...]\n" + "Options:\n" + " -h, --help Show this help\n" + " -V, --version Show package version\n" + " --lock-datetime Lock date and time changes\n" + " --lock-timezone Lock time zone changes\n" + " --lock-ntp-mode Lock NTP mode selection\n" + " --lock-ntp-edit Lock editing NTP servers\n" + " --lock-save Lock saving local and global configuration\n" + " --lock-save-local Lock save global configuration\n" + " --lock-save-global Lock load global configuration\n" + " --lock-load-global Lock load global configuration\n"; + cout << gettext(help.c_str()); + } diff --git a/source/ubl-settings-datetime.h b/source/ubl-settings-datetime.h index 60c1def..7fa3d20 100644 --- a/source/ubl-settings-datetime.h +++ b/source/ubl-settings-datetime.h @@ -36,8 +36,8 @@ extern bool flag_save_global; extern bool flag_load_global; extern int socket_ext_id_I; extern int socket_trd_id_I; -class CmdArgParser : public Glib::OptionGroup -{ +extern string version_application; +class CmdArgParser : public Glib::OptionGroup { public: CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help); ::Window GetSocketID() const; @@ -56,12 +56,10 @@ class MainWindow : public Gtk::ApplicationWindow { Gtk::ComboBoxText *cbDhcp; Gtk::SpinButton *numTimeHrs; Gtk::SpinButton *numTimeMin; - Gtk::CheckButton *cbxSynchronizeNtpGlob; Gtk::Box *boxColor; Gtk::ComboBoxText *cbRegion; Gtk::ComboBoxText *cbZone; Gtk::Window *windowMessDchp; - Gtk::Window *windowMessSudo; Gtk::Popover *popCalendar; Gtk::Calendar *cldrDate; Gtk::Label *lblMessage; @@ -88,7 +86,7 @@ class MainWindow : public Gtk::ApplicationWindow { Gtk::Button *btnSettings; Gtk::AboutDialog *aboutWindows; Gtk::ButtonBox *btnBoxAboutDialog; - + Gtk::Box *boxWidgetFunc; Gtk::Box *boxInfoError; Gtk::Label *lblWarning; Gtk::Image *imgInfo; @@ -114,11 +112,13 @@ class MainWindow : public Gtk::ApplicationWindow { Gtk::Image *imgLoad; Gtk::Image *imgSave; Gtk::Image *imgSettings; - + string array_hw[2]; + string array_hw_local[2]; + bool flag_load = false; unsigned int year = 0; unsigned int month = 0; unsigned int day = 0; - string version_application = "1.4"; + string default_get_dhcp = ""; int error_info = 0; int warning_info = 0; string cmd_error = ""; @@ -140,14 +140,15 @@ class MainWindow : public Gtk::ApplicationWindow { MainWindow(Glib::RefPtr const& builder); virtual ~MainWindow() = default; void log_mess_error(string &cmd); - void hardware_clock_global(string &local, string &etc); + void set_hardware_clock(string &local, string &etc); void info_warning_error(int mess); void synopsis_show(); - void entry_hardware_clock(string &cmd); + 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(); + string get_ubconfig_value(string &cmd); void save_global_cfg(); void save_Dhcp(string &cmd_default, string &cmd_dhcp, string &remove, string &cmd_set_ntp); void load_local_cfg(); @@ -172,15 +173,14 @@ class MainWindow : public Gtk::ApplicationWindow { void append_zone(); void append_zone_glob(); void update_time_date(); + void bubble_sort(string arr[],string arr_local[], int len_arr); void update_hour_minute(); void update_calendar(); void read_file(); void parse_text_date(); void hardware_clock(); void set_ntp_toggle_glob(); - int check_root(); void gui_exit(); - bool gui_exit_2(GdkEventAny* event); void wind_close_ntp(); void wrapper_system(string cmd, string thread_str); void info_status_app(string stule); diff --git a/source/ubl-util-standard.c b/source/ubl-util-standard.c index ef040bd..3b753b1 100644 --- a/source/ubl-util-standard.c +++ b/source/ubl-util-standard.c @@ -44,6 +44,14 @@ inline void ubl_make_plugs(Gtk::Widget *LeftWidget, Gtk::Widget *RightWidget, in if (left_plug_id>0&&LeftWidget){ GtkWidget *plug=gtk_plug_new(left_plug_id); GtkWidget *toplug=GTK_WIDGET(LeftWidget->gobj()); + {GdkScreen *screen = gtk_widget_get_screen(plug); + gtk_widget_set_app_paintable(plug,TRUE); + GdkVisual *colormap = gdk_screen_get_rgba_visual(screen); + gtk_widget_set_visual(plug, colormap);} + {GdkScreen *screen = gtk_widget_get_screen(toplug); + gtk_widget_set_app_paintable(toplug,TRUE); + GdkVisual *colormap = gdk_screen_get_rgba_visual(screen); + gtk_widget_set_visual(toplug, colormap);} if (gtk_widget_get_parent(GTK_WIDGET(toplug))){ g_object_ref(G_OBJECT(toplug)); GtkWidget *parent=gtk_widget_get_parent(toplug); @@ -52,16 +60,21 @@ inline void ubl_make_plugs(Gtk::Widget *LeftWidget, Gtk::Widget *RightWidget, in } else gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); gtk_widget_show(GTK_WIDGET(plug)); - gtk_style_context_remove_class(gtk_widget_get_style_context(plug),"bkimButton"); - gtk_style_context_remove_class(gtk_widget_get_style_context(toplug),"bkimButton"); - gtk_style_context_add_class(gtk_widget_get_style_context(plug),"noborder"); - gtk_style_context_add_class(gtk_widget_get_style_context(toplug),"button"); - gtk_style_context_add_class(gtk_widget_get_style_context(plug),"button"); + gtk_style_context_add_class(gtk_widget_get_style_context(plug),"bkim"); + gtk_style_context_add_class(gtk_widget_get_style_context(toplug),"bkim"); gtk_style_context_add_class(gtk_widget_get_style_context(plug),"primary-toolbar"); } if (right_plug_id>0&&RightWidget){ GtkWidget *plug=gtk_plug_new(right_plug_id); GtkWidget *toplug=GTK_WIDGET(RightWidget->gobj()); + {GdkScreen *screen = gtk_widget_get_screen(plug); + gtk_widget_set_app_paintable(plug,TRUE); + GdkVisual *colormap = gdk_screen_get_rgba_visual(screen); + gtk_widget_set_visual(plug, colormap);} + {GdkScreen *screen = gtk_widget_get_screen(toplug); + gtk_widget_set_app_paintable(toplug,TRUE); + GdkVisual *colormap = gdk_screen_get_rgba_visual(screen); + gtk_widget_set_visual(toplug, colormap);} if (gtk_widget_get_parent(GTK_WIDGET(toplug))){ g_object_ref(G_OBJECT(toplug)); GtkWidget *parent=gtk_widget_get_parent(toplug); @@ -70,13 +83,9 @@ inline void ubl_make_plugs(Gtk::Widget *LeftWidget, Gtk::Widget *RightWidget, in } else gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); gtk_widget_show(GTK_WIDGET(plug)); - gtk_style_context_remove_class(gtk_widget_get_style_context(plug),"bkimButton"); - gtk_style_context_remove_class(gtk_widget_get_style_context(toplug),"bkimButton"); - gtk_style_context_add_class(gtk_widget_get_style_context(plug),"noborder"); - gtk_style_context_add_class(gtk_widget_get_style_context(toplug),"button"); - gtk_style_context_add_class(gtk_widget_get_style_context(plug),"button"); + gtk_style_context_add_class(gtk_widget_get_style_context(plug),"bkim"); + gtk_style_context_add_class(gtk_widget_get_style_context(toplug),"bkim"); gtk_style_context_add_class(gtk_widget_get_style_context(plug),"primary-toolbar"); - } } #endif \ No newline at end of file diff --git a/style.css b/style.css index c1c8a2f..dcfb5c4 100644 --- a/style.css +++ b/style.css @@ -13,91 +13,68 @@ .textHeaderBar{ font-weight: bold; } +.menu:hover { + border-color:alpha(@theme_text_color, 0.01); +} + +.menu:hover >* { +border-color:alpha(@theme_text_color, 0.01); +} + +.menuitemtop{ +margin-bottom:0px; +} .menuitemtop *{ - margin:2px 2px 0 2px; - padding: 5px 10px 3px 5px; +margin:2px 2px 0 2px; +padding: 5px 10px 3px 5px; } .menuitemmiddle *{ - margin:0 2px 0 2px; - padding: 3px 10px 3px 5px; +margin:0 2px 0 2px; +padding: 3px 10px 3px 5px; } .menuitembottom *{ - margin:0 2px 2px 2px; - padding: 3px 10px 5px 5px; +margin:0 2px 2px 2px; +padding: 3px 10px 5px 5px; } .menuitemtop:hover { - border-radius:3px; - background:@theme_bg_color; +background:@theme_bg_color; } .menuitemmiddle:hover { - border-radius:3px; - background:@theme_bg_color; +background:@theme_bg_color; } .menuitembottom:hover { - border-radius:3px; - background:@theme_bg_color; - +background:@theme_bg_color; + } .menuitemtop:hover* { - border-radius:3px; - margin:2px 2px 0 2px; - padding: 5px 10px 3px 5px; - background:@theme_selected_bg_color; - border-color:transparent; +margin:2px 2px 0 2px; +padding: 5px 10px 3px 5px; +background:@theme_selected_bg_color; +border-radius:2px; } .menuitemmiddle:hover* { - border-radius:3px; - margin:0 2px 0 2px; - padding: 3px 10px 3px 5px; - background:@theme_selected_bg_color; - border-color:transparent; +margin:0 2px 0 2px; +padding: 3px 10px 3px 5px; +background:@theme_selected_bg_color; +border-radius:2px; } .menuitembottom:hover* { - border-radius:3px; - margin:0 2px 2px 2px; - padding: 3px 10px 5px 5px; - background:@theme_selected_bg_color; - border-color:transparent; -} -.menuitembottom{ - margin-top:0px; -} -.menuitemmiddle{ - margin-top:0px; - margin-bottom:0px; -} - -.menuitemtop{ - margin-bottom:0px; -} - -.bkimHeadBar{ - opacity:1.0; +margin:0 2px 2px 2px; +padding: 3px 10px 5px 5px; +background:@theme_selected_bg_color; +border-radius:2px; } -.bkimButton{ - background-color: transparent; - opacity:1.0; -} -.bkimButtonPlug{ - background-color: transparent; - opacity:1.0; -} .noborder{ border:none; } -.buttonPlug { - background-color: transparent; - background-repeat: no-repeat; - border: none; - outline: none; + +.bkim{ + opacity:0.99; + border:none; } -.button { - background-image: -gtk-gradient(linear, - left top, left bottom, - from(@entry_background_a), - color-stop(0.20, @entry_background_b), - color-stop(0.85, @entry_background_c), - to(@entry_background_d)); +.bkim_no_plug{ + background-color: transparent; + opacity:0.99; } \ No newline at end of file diff --git a/ubl-settings-datetime.glade b/ubl-settings-datetime.glade index d179374..45593ac 100644 --- a/ubl-settings-datetime.glade +++ b/ubl-settings-datetime.glade @@ -143,6 +143,7 @@ + 659 False @@ -314,7 +315,7 @@ - + True False vertical @@ -356,7 +357,7 @@ 5 6 6 - Time + Time: True 0 @@ -428,7 +429,7 @@ 5 6 6 - Date + Date: True 0 @@ -453,7 +454,7 @@ Format: DD.MM.YYYY 6 - False + True True 5 @@ -706,7 +707,7 @@ Format: DD.MM.YYYY True False - Synchronize via NTP: + Synchronize via NTP @@ -756,22 +757,10 @@ Format: DD.MM.YYYY 13 Synchronize hardware time: - - True - True - 0 - - - - - True - False - 55 - False True - 1 + 0 @@ -825,7 +814,7 @@ Format: DD.MM.YYYY 5 6 13 - Region + Region: 0 @@ -863,7 +852,7 @@ Format: DD.MM.YYYY 5 6 13 - Area + Area: 0 @@ -1041,6 +1030,9 @@ Format: DD.MM.YYYY 0 + 1 @@ -1126,6 +1118,9 @@ Format: DD.MM.YYYY 1 + end @@ -1144,19 +1139,9 @@ Format: DD.MM.YYYY - both - True - - - - - both - True - - - + diff --git a/ubl-settings-datetime_ru.po b/ubl-settings-datetime_ru.po index 7472b4e..6488c96 100644 --- a/ubl-settings-datetime_ru.po +++ b/ubl-settings-datetime_ru.po @@ -16,6 +16,9 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "https://wiki.ublinux.com/ru/Программное_обеспечение/Программы_и_утилиты/Все/" +msgstr "https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/" + msgid "Copyright © UBSoft LLC, 2022 - " msgstr "Авторские права © ООО \"Юбисофт\", 2022 - " @@ -94,8 +97,8 @@ msgstr "Изменить параметр NTPSERVERS" msgid "ubl-settings-datetime" msgstr "Настройка даты и времени" -msgid "Time" -msgstr "Время" +msgid "Time:" +msgstr "Время:" msgid "Clock" msgstr "Часы" @@ -106,8 +109,8 @@ msgstr ":" msgid "Minutes" msgstr "Минуты" -msgid "Date" -msgstr "Дата" +msgid "Date:" +msgstr "Дата:" msgid "Date of\nFormat: DD.MM.YYYY" msgstr "Дата\nФормат: ДД.ММ.ГГГГ" @@ -118,11 +121,11 @@ msgstr "Интерактивный выбор даты" msgid "Change zone setting" msgstr "Изменить параметр зоны" -msgid "Region" -msgstr "Регион" +msgid "Region:" +msgstr "Регион:" -msgid "Zone" -msgstr "Зона" +msgid "Zone:" +msgstr "Зона:" msgid "Sync by" msgstr "Синхронизировать" @@ -130,8 +133,8 @@ msgstr "Синхронизировать" msgid "Automatic time synchronization" msgstr "Автоматическая синхронизация времени" -msgid "Synchronize via NTP:" -msgstr "Синхронизировать через NTP:" +msgid "Synchronize via NTP" +msgstr "Синхронизировать через NTP" msgid "Time zone" msgstr "Часовой пояс" @@ -1648,24 +1651,6 @@ msgstr "Введите имя ntp-сервера или его ip-адрес.\n msgid "Cape_Verde" msgstr "Кабо-Верде" -msgid "Usage: ubl-settings-datetime [--lock-timezone] [--lock-ntp] [--lock-datetime] [--lock-update]\n" -msgstr "Использование: ubl-settings-datetime [--lock-timezone] [--lock-ntp] [--lock-datetime] [--lock-update]\n" - -msgid " --lock-timezone Disable timezone field editing\n" -msgstr " --lock-timezone Отключить редактирование поля часового пояса\n" - -msgid " --lock-ntp Disable ntp field editing\n" -msgstr " --lock-ntp Отключить редактирование полей ntp\n" - -msgid " --lock-datetime Disable datetime field editing\n" -msgstr " --lock-datetime Отключить редактирование полей даты и времени\n" - -msgid " --lock-update Disable save changes\n" -msgstr " --lock-update Отключить сохранение изменений\n" - -msgid "Options:\n" -msgstr "Опции:\n" - msgid "Save" msgstr "Сохранить" @@ -1807,3 +1792,34 @@ msgstr "Успешно записана глобальная конфигура msgid "Local configuration successfully written" msgstr "Успешно записана локальная конфигурация" +msgid "" +"GTK settings datetime for UBLinux\n\n" +"Usage: ubl-settings-datetime [OPTIONS...]\n" +"Options:\n" +" -h, --help Show this help\n" +" -V, --version Show package version\n" +" --lock-datetime Lock date and time changes\n" +" --lock-timezone Lock time zone changes\n" +" --lock-ntp-mode Lock NTP mode selection\n" +" --lock-ntp-edit Lock editing NTP servers\n" +" --lock-save Lock saving local and global configuration\n" +" --lock-save-local Lock save global configuration\n" +" --lock-save-global Lock load global configuration\n" +" --lock-load-global Lock load global configuration\n" +msgstr "" +"GTK-утилита настройки даты и времени для UBLinux\n\n" +"Использование: ubl-settings-datetime [Параметры приложения...]\n" +"Параметры приложения:\n" +" -h, --help Показать параметры справки\n" +" -V, --version Показать версию пакета\n" +" --lock-datetime Блокировка изменения даты и времени\n" +" --lock-timezone Блокировка изменения часового пояса\n" +" --lock-ntp-mode Блокировка выбора режима NTP\n" +" --lock-ntp-edit Блокировка перечня NTP серверов\n" +" --lock-save Блокировка сохранения локальной и глобальной конфигурации\n" +" --lock-save-local Блокировка сохранения локальной конфигурации\n" +" --lock-save-global Блокировка сохранения глобальной конфигурации\n" +" --lock-load-global Блокировка загрузки глобальной конфигурации\n" + +msgid "ubl-settings-datetime version: " +msgstr "ubl-settings-datetime версия: "