diff --git a/Makefile b/Makefile index 370b374..0ba8841 100644 --- a/Makefile +++ b/Makefile @@ -74,8 +74,8 @@ uninstall: $(RM) "/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ done @for SIZE in 16x16 32x32 48x48 scalable; do \ - $(RM) "/usr/share/icons/hicolor/$${SIZE}/apps/${pkgname}.svg"; \ - $(RM) "/usr/share/icons/hicolor/$${SIZE}/apps/${pkgname}.png"; \ + $(RM) "/usr/share/icons/hicolor/$${SIZE}/apps/ru.ublinux.${pkgname}.svg"; \ + $(RM) "/usr/share/icons/hicolor/$${SIZE}/apps/ru.ublinux.${pkgname}.png"; \ done @for FILE_SVG in $(wildcard *.svg); do \ for SIZE in 16x16 32x32 48x48 scalable; do \ @@ -85,7 +85,6 @@ uninstall: @$(RM) "/usr/bin/${pkgname}" @$(RM) "/usr/share/applications/${pkgname}.desktop" @$(RM) "/usr/share/polkit-1/actions/ru.ublinux.pkexec.${pkgname}.exec.policy" - @$(RM) -rd "/usr/share/${pkgname}" @gtk-update-icon-cache -fiq /usr/share/icons/hicolor/ &>/dev/null @update-desktop-database --quiet 2>/dev/null @touch /usr/share/applications @@ -103,22 +102,22 @@ install: check uninstall done @for SIZE in 16 32 48; do \ install -dm755 "${pkgdir}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ - rsvg-convert -w $${SIZE} -h $${SIZE} -f png --keep-image-data ${pkgname}.svg -o "${pkgdir}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/${pkgname}.png"; \ + rsvg-convert -w $${SIZE} -h $${SIZE} -f png --keep-image-data "ru.ublinux.${pkgname}.svg" -o "${pkgdir}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/ru.ublinux.${pkgname}.png"; \ done @install -dm755 "${pkgdir}/usr/share/icons/hicolor/scalable/apps" - @install -Dm644 -t "${pkgdir}/usr/share/icons/hicolor/scalable/apps/" "${pkgname}.svg" + @install -Dm644 -t "${pkgdir}/usr/share/icons/hicolor/scalable/apps/" "ru.ublinux.${pkgname}.svg" @install -Dm755 -t "${pkgdir}/usr/bin/" "${CMAKE_BUILD_DIR}/${pkgname}" @install -Dm644 -t "${pkgdir}/usr/share/applications/" "${pkgname}.desktop" @install -Dm644 -t "${pkgdir}/usr/share/polkit-1/actions/" "ru.ublinux.pkexec.${pkgname}.exec.policy" @install -dm755 "${pkgdir}/usr/share/${pkgname}"/{ui,images,css} @install -Dm644 -t "${pkgdir}/usr/share/${pkgname}/ui/" "${pkgname}.glade" @install -Dm644 -t "${pkgdir}/usr/share/${pkgname}/css/" style.css - @install -Dm644 -t "${pkgdir}/usr/share/${pkgname}/images/" "${pkgname}.svg" - @install -Dm644 -t "${pkgdir}/usr/share/${pkgname}/images/" "${pkgname}.png" - @install -Dm644 -t "${pkgdir}/usr/share/${pkgname}/images/" bg_top.png - @install -Dm644 -t "${pkgdir}/usr/share/${pkgname}/images/" checked.svg - @install -Dm644 -t "${pkgdir}/usr/share/${pkgname}/images/" warning.svg - @gtk-update-icon-cache -fiq /usr/share/icons/hicolor/ + @install -Dm644 -t "${pkgdir}/usr/share/${pkgname}/images/" "ru.ublinux.${pkgname}.svg" + @install -Dm644 -t "${pkgdir}/usr/share/${pkgname}/images/" "ru.ublinux.${pkgname}.png" + @install -Dm644 -t "${pkgdir}/usr/share/icons/hicolor/scalable/emblems/" "bg_top.png" + @install -Dm644 -t "${pkgdir}/usr/share/icons/hicolor/scalable/status/" "ru.ublinux.ubl-settings-datetime.checked.svg" + @install -Dm644 -t "${pkgdir}/usr/share/icons/hicolor/scalable/status/" "ru.ublinux.ubl-settings-datetime.warning.svg" + @gtk-update-icon-cache -fiq /usr/share/icons/hicolor/ &>/dev/null @update-desktop-database --quiet 2>/dev/null @touch /usr/share/applications @echo "Install: OK" diff --git a/close.svg b/close.svg deleted file mode 100644 index d869d85..0000000 --- a/close.svg +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - diff --git a/checked.svg b/ru.ublinux.ubl-settings-datetime.checked.svg similarity index 100% rename from checked.svg rename to ru.ublinux.ubl-settings-datetime.checked.svg diff --git a/ubl-settings-datetime.png b/ru.ublinux.ubl-settings-datetime.png similarity index 100% rename from ubl-settings-datetime.png rename to ru.ublinux.ubl-settings-datetime.png diff --git a/ubl-settings-datetime.svg b/ru.ublinux.ubl-settings-datetime.svg similarity index 100% rename from ubl-settings-datetime.svg rename to ru.ublinux.ubl-settings-datetime.svg diff --git a/warning.svg b/ru.ublinux.ubl-settings-datetime.warning.svg similarity index 100% rename from warning.svg rename to ru.ublinux.ubl-settings-datetime.warning.svg diff --git a/source/ubl-settings-datetime.cc b/source/ubl-settings-datetime.cc index b6a0353..b01728f 100644 --- a/source/ubl-settings-datetime.cc +++ b/source/ubl-settings-datetime.cc @@ -15,8 +15,8 @@ bool flag_save = false; bool flag_save_local = false; bool flag_save_global = false; bool flag_load_global = false; -int socket_ext_id_I= 0; -int socket_trd_id_I= 0; +int socket_ext_id_I = 0; +int socket_trd_id_I = 0; 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} { @@ -24,17 +24,14 @@ CmdArgParser::CmdArgParser(const std::string& p_name, const std::string& p_descr socketIDArg.set_long_name("socket-id"); socketIDArg.set_flags(Glib::OptionEntry::FLAG_IN_MAIN); socketIDArg.set_description("Settings manager socket"); - Glib::OptionEntry socketExtId; socketExtId.set_long_name("socket-ext-id"); socketExtId.set_flags(Glib::OptionEntry::FLAG_IN_MAIN); socketExtId.set_description("Settings manager secondary socket"); - Glib::OptionEntry socketTrdId; socketTrdId.set_long_name("socket-trd-id"); socketTrdId.set_flags(Glib::OptionEntry::FLAG_IN_MAIN); socketTrdId.set_description("Settings manager secondary socket"); - add_entry(socketIDArg, m_socketID); add_entry(socketExtId, socket_ext_id_I); add_entry(socketTrdId, socket_trd_id_I); @@ -55,6 +52,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["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["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\"")); this->get_builder(); this->add_CSS(); ubl_make_plugs(boxSave,boxButton, socket_ext_id_I, socket_trd_id_I); @@ -72,10 +96,14 @@ void MainWindow::settings() { btnBoxAboutDialog->set_visible(false); this->event(); this->parse_text_date(); - this->download_local_cfg(); + this->load_local_cfg(); } else { - btnDownload->set_sensitive(false); + lblHW->set_sensitive(false); + cbHw->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); @@ -95,28 +123,34 @@ void MainWindow::settings() { lblDateTimeSetting->set_sensitive(false); btnBoxAboutDialog->set_visible(false); this->event(); - imgInfo->set("/usr/share/ubl-settings-datetime/images/checked.svg"); + imgInfo->set_from_icon_name("ru.ublinux.ubl-settings-datetime.warning", Gtk::ICON_SIZE_MENU); + info_status_app("boxInfoMessError"); + lblWarning->set_text(_("The program must be run as root")); } - } int MainWindow::check_root() { if (geteuid() != 0) { - lblMessageSudo->set_text(_("The program must be run with \nsuperuser privileges!")); - mess_sudo->show(); + lblMessageSudo->set_text(_("The program must be run as root")); + windowMessSudo->show(); return 1; } return 0; } void MainWindow::lacalization() { - aboutWindows->set_comments(_("Setting the date and time")); + time_t now = time(0); + tm *ltm = localtime(&now); + unsigned int year = 1900+ ltm->tm_year; + string str_authors = string(_("Copyright © UBSoft LLC, 2022 - ")) + to_string(year); + aboutWindows->set_copyright(str_authors); + aboutWindows->set_comments(_("Date and Time")); aboutWindows->set_website(_("https://wiki.ublinux.com")); aboutWindows->set_version(_(version_application.c_str())); aboutWindows->set_website_label(_("Project Home Page")); lblSave->set_label(_("Save")); - lblDownload->set_label(_("Download")); + 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:")); @@ -133,13 +167,12 @@ void MainWindow::lacalization() { lblZone->set_text(_("Zone")); lblSynchronizeBtn->set_text(_("Sync by")); lblHeader->set_text(_("ubl-settings-datetime")); - mess_sudo->set_title(_("Warning!")); - mess_dchp->set_title(_("Warning!")); + 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")); - } void MainWindow::flag_block_gui() { @@ -167,7 +200,7 @@ void MainWindow::flag_block_gui() { txtNtpServer->set_sensitive(false); } if (flag_load_global == true) { - btnDonwlolGlob->set_sensitive(false); + btnLoadGlob->set_sensitive(false); } if (flag_save == true) { btnSave->set_sensitive(false); @@ -178,7 +211,6 @@ void MainWindow::flag_block_gui() { if (flag_save_global == true) { btnSaveGlob->set_sensitive(false); } - } void MainWindow::add_CSS() { @@ -187,37 +219,16 @@ void MainWindow::add_CSS() { Glib::RefPtr styleContext = Gtk::StyleContext::create(); Glib::RefPtr screen = Gdk::Screen::get_default();//get default screen styleContext->add_provider_for_screen(screen, cssProvider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);//add provider for screen in all application - Glib::RefPtr context = boxColor->get_style_context(); - Glib::RefPtr context_lbl_head = lblHead->get_style_context(); - context->add_class("cssboxColor1"); - context_lbl_head->add_class("textHead"); - /* + Glib::RefPtr boxColor_css = boxColor->get_style_context(); + boxColor_css->add_class("cssboxColor1"); + Glib::RefPtr lblHead_css = lblHead->get_style_context(); Glib::RefPtr boxButton_css = boxButton->get_style_context(); Glib::RefPtr boxSave_css = boxSave->get_style_context(); - Glib::RefPtr btnDownload_css = btnDownload->get_style_context(); - Glib::RefPtr lblDownload_css = lblDownload->get_style_context(); - Glib::RefPtr imgDonwload_css = imgDonwload->get_style_context(); Glib::RefPtr headerBar_css = headerBar->get_style_context(); - headerBar_css->add_class("bkim"); - imgDonwload_css->add_class("bkim"); - lblDownload_css->add_class("bkim"); - btnDownload_css->add_class("bkim"); - boxButton_css->add_class("bkim"); - boxSave_css->add_class("bkim"); - double opacity= 1.0; - headerBar->set_opacity(opacity); - boxButton->set_opacity(opacity); - boxSave->set_opacity(opacity); - btnDownload->set_opacity(opacity); - lblDownload->set_opacity(opacity); - imgDonwload->set_opacity(opacity); - btnSave->set_opacity(opacity); - lblSave->set_opacity(opacity); - btnSettings->set_opacity(opacity); - imgSave->set_opacity(opacity); - imgSettings->set_opacity(opacity); - */ - + lblHead_css->add_class("textHead"); + boxButton_css->add_class("bkimButton"); + boxSave_css->add_class("bkimButton"); + headerBar_css->add_class("bkimHeadBar"); } @@ -242,24 +253,24 @@ void MainWindow::get_builder() { builder->get_widget("cbZone", cbZone); builder->get_widget("txtNtpServer", txtNtpServer); builder->get_widget("cldrDate", cldrDate); - builder->get_widget("mess_dchp", mess_dchp); + builder->get_widget("windowMessDchp", windowMessDchp); builder->get_widget("lblMessage", lblMessage); - builder->get_widget("lblDateTimeSetting",lblDateTimeSetting); - builder->get_widget("lblHead",lblHead); - builder->get_widget("lblTime",lblTime); - builder->get_widget("lblData",lblData); - builder->get_widget("lblTimeZone",lblTimeZone); - builder->get_widget("lblReg",lblReg); - builder->get_widget("lblZone",lblZone); - builder->get_widget("lblSynchronizebChkGLob",lblSynchronizebChkGLob); - builder->get_widget("lblSynchronizeBtn",lblSynchronizeBtn); - builder->get_widget("lblTimeBios",lblTimeBios); + builder->get_widget("lblDateTimeSetting", lblDateTimeSetting); + builder->get_widget("lblHead", lblHead); + builder->get_widget("lblTime", lblTime); + builder->get_widget("lblData", lblData); + builder->get_widget("lblTimeZone", lblTimeZone); + builder->get_widget("lblReg", lblReg); + builder->get_widget("lblZone", lblZone); + builder->get_widget("lblSynchronizebChkGLob", lblSynchronizebChkGLob); + builder->get_widget("lblSynchronizeBtn", lblSynchronizeBtn); + builder->get_widget("lblTimeBios", lblTimeBios); builder->get_widget("btnHardwareTime",btnHardwareTime); - builder->get_widget("mess_sudo",mess_sudo); - builder->get_widget("lblMessageSudo",lblMessageSudo); + builder->get_widget("windowMessSudo",windowMessSudo); + builder->get_widget("lblMessageSudo", lblMessageSudo); builder->get_widget("btnMessCloseSudo",btnMessCloseSudo); - builder->get_widget("lblSave",lblSave); - builder->get_widget("lblDownload",lblDownload); + builder->get_widget("lblSave", lblSave); + builder->get_widget("lblLoad", lblLoad); builder->get_widget("aboutWindows", aboutWindows); builder->get_widget("btnBoxAboutDialog", btnBoxAboutDialog); builder->get_widget("boxInfoError", boxInfoError); @@ -267,11 +278,11 @@ void MainWindow::get_builder() { builder->get_widget("imgInfo", imgInfo); builder->get_widget("btnSave", btnSave); builder->get_widget("btnSettings", btnSettings); - builder->get_widget("btnDownload", btnDownload); + builder->get_widget("btnLoad", btnLoad); builder->get_widget("btnSynopsis", btnSynopsis); builder->get_widget("btnAbout", btnAbout); - builder->get_widget("btnDonwlodLocal", btnDonwlodLocal); - builder->get_widget("btnDonwlolGlob", btnDonwlolGlob); + builder->get_widget("btnLoadLocal", btnLoadLocal); + builder->get_widget("btnLoadGlob", btnLoadGlob); builder->get_widget("btnSaveLocalGlob", btnSaveLocalGlob); builder->get_widget("btnSaveLocal", btnSaveLocal); builder->get_widget("btnSaveGlob", btnSaveGlob); @@ -286,11 +297,9 @@ void MainWindow::get_builder() { builder->get_widget("standartHead", standartHead); builder->get_widget("plugBox", plugBox); builder->get_widget("window" ,window); - builder->get_widget("imgDonwload", imgDonwload); - builder->get_widget("imgDonwload", imgDonwload); + builder->get_widget("imgLoad", imgLoad); builder->get_widget("imgSettings", imgSettings); builder->get_widget("imgSave", imgSave); - } void MainWindow::gui_exit() { @@ -314,15 +323,14 @@ 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)); - mess_sudo->signal_delete_event().connect(sigc::mem_fun(*this, &MainWindow::gui_exit_2)); + 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)); - btnDonwlodLocal->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::download_local_cfg)); - btnDonwlolGlob->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::download_globl_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)); btnSaveLocalGlob->signal_activate().connect([&]() {save_global_local_cfg();}); btnSaveLocal->signal_activate().connect([&]() {save_local_cfg();}); btnSaveGlob->signal_activate().connect([&]() {save_global_cfg();}); - } void MainWindow::synopsis_show() { @@ -334,7 +342,7 @@ void MainWindow::synopsis_show() { } } -void MainWindow::download_local_cfg() { +void MainWindow::load_local_cfg() { string cmd = "/usr/bin/ubconfig --default --source system get clock ZONE"; this->fill_in_reg_zone(cmd); this->update_hour_minute(); @@ -343,20 +351,18 @@ void MainWindow::download_local_cfg() { string cmd_default_get_dhcp = "/usr/bin/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"; - string hw_default = "/usr/bin/ubconfig --default --source system get clock HWCLOCK_SYNC"; - this->entry_hardware_clock(hw, hw_default); + this->entry_hardware_clock(hw); info_warning_error(0); } -void MainWindow::download_globl_cfg() { +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"; this->entry_dhcp_mess(cmd_get_dhcp, cmd_default_get_dhcp); string cmd_zone = "/usr/bin/ubconfig --default --source global get clock ZONE"; this->fill_in_reg_zone(cmd_zone); - string hw = "/usr/bin/ubconfig --default --source global get clock HWCLOCK_SYNC"; - string hw_default = "/usr/bin/ubconfig --default --source global get clock HWCLOCK_SYNC"; - this->entry_hardware_clock(hw, hw_default); + string hw = "/usr/bin/ubconfig --source global get clock HWCLOCK_SYNC"; + this->entry_hardware_clock(hw); info_warning_error(1); } @@ -366,11 +372,11 @@ void MainWindow::save_local_cfg() { 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 = "/usr/bin/ubconfig --target system remove network NTPSERVERS"; - this->save_Dhcp(cmd_default, cmd_dhcp, remove, cmd_set_ntp); + string remove_ntp = "/usr/bin/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->hardware_clock_global(local, hw); + string hw = "/usr/bin/ubconfig --target system set clock HWCLOCK_SYNC=utc"; + this->entry_hardware_clock(hw); info_warning_error(2); } @@ -380,8 +386,8 @@ void MainWindow::save_global_cfg() { 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 = "/usr/bin/ubconfig --target global remove network NTPSERVERS"; - this->save_Dhcp(cmd_default, cmd_dhcp, remove, cmd_set_ntp); + string remove_ntp = "/usr/bin/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); @@ -406,28 +412,35 @@ void MainWindow::save_global_local_cfg() { void MainWindow::info_warning_error(int mess) { if (error_info > 0 || warning_info > 0) { info_status_app("boxInfoMessError"); - imgInfo->set("/usr/share/ubl-settings-datetime/images/warning.svg"); + imgInfo->set_from_icon_name("ru.ublinux.ubl-settings-datetime.warning", Gtk::ICON_SIZE_MENU); error_info = 0; warning_info = 0; + string mess_error = ""; if (mess == 0) { - lblWarning->set_text(_("Local configuration reading error")); + mess_error = string(_("Local configuration reading error")) + cmd_error; + lblWarning->set_text(mess_error); } else if (mess == 1) { - lblWarning->set_text(_("Global configuration read error")); + mess_error = string(_("Global configuration read error")) + cmd_error; + lblWarning->set_text(mess_error); } else if (mess == 2) { - lblWarning->set_text(_("Local configuration write error")); + mess_error = string(_("Local configuration write error")) + cmd_error; + lblWarning->set_text(mess_error); } else if (mess == 3) { - lblWarning->set_text(_("Global configuration write error")); + mess_error = string(_("Global configuration write error")) + cmd_error; + lblWarning->set_text(mess_error); } else if (mess == 4) { - lblWarning->set_text(_("Error saved local and global configuration")); + mess_error = string(_("Error saved local and global configuration")) + cmd_error; + lblWarning->set_text(mess_error); } + cmd_error = ""; } else { info_status_app("boxInfoMessOK"); - imgInfo->set("/usr/share/ubl-settings-datetime/images/checked.svg"); + imgInfo->set_from_icon_name("ru.ublinux.ubl-settings-datetime.checked", Gtk::ICON_SIZE_MENU);//Gtk::IconSize::INHERIT); if (mess == 0) { lblWarning->set_text(_("Local configuration downloaded successfully")); } @@ -448,12 +461,28 @@ void MainWindow::info_warning_error(int mess) { void MainWindow::wrapper_system(string cmd, string thread_str = "") { - cmd=cmd + " " + thread_str; - int response_cmd = system(cmd.c_str()); - if (response_cmd!= 0) { - error_info+= 1; + string cmd_new = cmd + " " + thread_str; + int response_cmd = system(cmd_new.c_str()); + if (response_cmd != 0) { + error_info += 1; + this->log_mess_error(cmd); } +} +void MainWindow::log_mess_error(string &cmd){ + string key = ""; + if (map_error.find(cmd) != map_error.end()){ + cmd_error = map_error[cmd]; + } + else { + for ( const auto &map_iter: map_error ) { + key = map_iter.first; + if (cmd.find(key) != std::string::npos){ + cmd_error = map_iter.second; + break; + } + } + } } void MainWindow::hardware_clock_global(string &local, string &etc) { @@ -466,51 +495,25 @@ void MainWindow::hardware_clock_global(string &local, string &etc) { } } -void MainWindow::entry_hardware_clock_default(string &cmd_default) { - int error = warning_info; - struct Result obj_result_default = this->wrapper_call(cmd_default); - if (obj_result_default.error == 0) { - if (obj_result_default.response.find("localtime") !=string::npos) { - cbHw->set_active(0); - } - else if (obj_result_default.response.find("utc") !=string::npos) { - cbHw->set_active(1); - - } - - } - else if (obj_result_default.error == 3) { - if (error != warning_info) { - warning_info = error; - } - cbHw->set_active(-1); - } - -} - -void MainWindow::entry_hardware_clock(string &cmd, string &cmd_default) { +void MainWindow::entry_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) { + if (obj_result.response.find("localtime") != string::npos) { cbHw->set_active(0); } - else if (obj_result.response.find("utc") !=string::npos) { + else if (obj_result.response.find("utc") != string::npos) { cbHw->set_active(1); } else { - this->entry_hardware_clock_default(cmd_default); + cbHw->set_active(-1); } } - else if (obj_result.error == 3) { - if (error != warning_info) { - warning_info = error; - } + else { cbHw->set_active(-1); - this->entry_hardware_clock_default(cmd_default); } - else { - this->entry_hardware_clock_default(cmd_default); + if (error != warning_info){ + warning_info = error; } } @@ -521,13 +524,13 @@ void MainWindow::hardware_clock() { } void MainWindow::gui_mess_close() { - mess_dchp->hide(); + windowMessDchp->hide(); } bool MainWindow::focus_ntp(string &cmd_set_ntp) { if (txtNtpServer->get_text() == "" || txtNtpServer->get_text() == " ") { lblMessage->set_text(_("Enter DHCP!")); - mess_dchp->show(); + windowMessDchp->show(); } else { string cmd = ""; @@ -553,14 +556,13 @@ bool MainWindow::focus_ntp(string &cmd_set_ntp) { else { if (flag_error == true) { lblMessage->set_text(_("An invalid character is entered")); - mess_dchp->show(); + windowMessDchp->show(); } else if (flag_error_check_ntp == true) { lblMessage->set_text(_("Error in the ntp name")); - mess_dchp->show(); + windowMessDchp->show(); } } - } return true; } @@ -636,7 +638,7 @@ bool MainWindow::check_ntp(string &str_ntp) { struct MainWindow::Result MainWindow::wrapper_call(string cmd) { struct Result obj_result; - string response=this->call(cmd); + string response = this->call(cmd); if ((response.find("(null)") == std::string::npos) && (response.length() != 0 )) { if (response.find("=") != std::string::npos) { if (response.find("\n") != std::string::npos) { @@ -648,23 +650,30 @@ struct MainWindow::Result MainWindow::wrapper_call(string cmd) { else { obj_result.response = response; obj_result.error = 1; - warning_info+= 1; + warning_info += 1; + this->log_mess_error(cmd); } } else { obj_result.response = response; obj_result.error = 2; - warning_info+= 1; + warning_info += 1; + cmd_error = cmd; + this->log_mess_error(cmd); } } else { obj_result.response = response; obj_result.error = 3; - warning_info+= 1; + warning_info += 1; + cmd_error = cmd; + this->log_mess_error(cmd); } return obj_result; } + + void MainWindow::event_entry_cbDhcp() { string str_dhcp = cbDhcp->get_active_text(); string cmd = ""; @@ -676,8 +685,6 @@ void MainWindow::event_entry_cbDhcp() { txtNtpServer->set_text(""); btnUpdateDateTime->set_sensitive(false); txtNtpServer->set_sensitive(false); - - } else if (activ_index == 1) { btnUpdateDateTime->set_sensitive(false); @@ -685,7 +692,7 @@ void MainWindow::event_entry_cbDhcp() { txtNtpServer->set_text(""); } else if (activ_index == 2) { - if (flag_ntp_edit==false) { + if (flag_ntp_edit == false) { txtNtpServer->set_sensitive(true); } } @@ -703,7 +710,6 @@ void MainWindow::save_Dhcp(string &cmd_default, string &cmd_dhcp, string &remove } else if (activ_index == 0) { wrapper_system(cmd_default, "&"); - } else if (activ_index == 1) { wrapper_system(cmd_dhcp, "&"); @@ -752,7 +758,7 @@ void MainWindow::entry_dhcp_mess(string cmd_get_dhcp, string cmd_default_get_dhc btnUpdateDateTime->set_sensitive(false); if (str_dhcp == "") { lblMessage->set_text(_("Enter DHCP!")); - mess_dchp->show(); + windowMessDchp->show(); } else if (str_dhcp == "(null)") { cbDhcp->set_active(0); @@ -761,7 +767,7 @@ void MainWindow::entry_dhcp_mess(string cmd_get_dhcp, string cmd_default_get_dhc else { cbDhcp->set_active(2); txtNtpServer->set_text(str_dhcp); - if (flag_ntp_edit==false) { + if (flag_ntp_edit ==false) { txtNtpServer->set_sensitive(true); } } @@ -772,7 +778,7 @@ void MainWindow::entry_dhcp_mess(string cmd_get_dhcp, string cmd_default_get_dhc txtNtpServer->set_text(""); txtNtpServer->set_sensitive(false); btnUpdateDateTime->set_sensitive(true); - warning_info-= 1; + warning_info -= 1; } } @@ -846,8 +852,6 @@ void MainWindow::fill_in_reg_zone(string &cmd) { } } - - void MainWindow::get_config() { this->read_file(); this->update_hour_minute(); @@ -872,19 +876,18 @@ array MainWindow::split_region_zone(string &read_reg_zon_cfg) { arr[1] = ""; } return arr; - } void MainWindow::enter_zone(string &cmd) { int activ_index_reg = cbRegion->get_active_row_number(); - string reg_text=array_region[activ_index_reg]; + string reg_text = array_region[activ_index_reg]; int activ_index = cbZone->get_active_row_number(); string zone_text = ""; if(!(reg_text.empty())) { int index= 0; for (const auto &zone: time_reg_map.at(reg_text)) { - if (index==activ_index) { + if (index == activ_index) { zone_text=zone; } index+= 1; @@ -957,7 +960,7 @@ void MainWindow::append_region_zone(string region, string zone, Gtk::ComboBoxTex string zone_mixing = ""; string path_reg_zone = ""; string zone_offest = ""; - path_reg_zone=region + "/" + zone; + path_reg_zone = region + "/" + zone; zone_offest = this->zone_file_read(path_reg_zone) + _(zone.c_str()); if (region == "") { tmpCbZone->append(" "); @@ -994,6 +997,7 @@ void MainWindow::append_region_zone(string region, string zone, Gtk::ComboBoxTex } } + string MainWindow::call(string cmd) { FILE *fp; int status; @@ -1008,8 +1012,7 @@ string MainWindow::call(string cmd) { status = pclose(fp); if (status == -1) { exit(1); - } - + } return path; } @@ -1018,8 +1021,8 @@ void MainWindow::append_zone() { int index = cbRegion->get_active_row_number(); if (index!=-1) { string str_region = array_region[index]; - string zone_mixing= ""; - string path_dir= ""; + string zone_mixing = ""; + string path_dir = ""; if(str_region.length() != 0) { for (const auto &_str_zone : time_reg_map_local.at(str_region)) { cbZone->append(Glib::ustring(_str_zone)); @@ -1031,6 +1034,7 @@ void MainWindow::append_zone() { void MainWindow::update_time_date() { string cmd = ""; + string response = ""; if ((year != 0) && (month != 0) && (day != 0)) { string str_month = ""; string str_day = ""; @@ -1078,22 +1082,24 @@ void MainWindow::update_time_date() { void MainWindow::post_entry_data() { string cmd = ""; - string data = txtDate->get_text(); - if (data.length() == 10) { - string str_day = data.substr(0,2); - string str_month = data.substr(3,2); - string str_year = data.substr(6,data.length()); - cmd = "date +%Y%m%d -s \"" + str_year+ - str_month+str_day+"\""; - string str_error_clock = this->call(cmd); - size_t index = str_error_clock.find("date: "); - if (index == std::string::npos) { - } - } - else { + string data = txtDate->get_text(); + if (data.length() == 10) { + string str_day = data.substr(0,2); + string str_month = data.substr(3,2); + string str_year = data.substr(6,data.length()); + cmd = "date +%Y%m%d -s \"" + str_year+ + str_month+str_day+"\""; + string str_error_clock = this->call(cmd); + size_t index = str_error_clock.find("date:"); + if (index != std::string::npos) { lblMessage->set_text(_("Incorrect date format")); - mess_dchp->show(); + windowMessDchp->show(); } + } + else { + lblMessage->set_text(_("Incorrect date format")); + windowMessDchp->show(); + } } void MainWindow::update_hour_minute() { @@ -1227,8 +1233,9 @@ void MainWindow::sort_zone(vector *time_reg_map_local,vector *ti b = (*time_reg_map)[j]; (*time_reg_map)[j] = (*time_reg_map)[j + 1]; (*time_reg_map)[j + 1] = b; - } } - } + } + } + } } } diff --git a/source/ubl-settings-datetime.h b/source/ubl-settings-datetime.h index ce4b60e..9f32d1f 100755 --- a/source/ubl-settings-datetime.h +++ b/source/ubl-settings-datetime.h @@ -15,6 +15,7 @@ #include #include #include +#include #include "ubl-util-standard.c" @@ -59,8 +60,8 @@ class MainWindow : public Gtk::ApplicationWindow { Gtk::Box *boxColor; Gtk::ComboBoxText *cbRegion; Gtk::ComboBoxText *cbZone; - Gtk::Window *mess_dchp; - Gtk::Window *mess_sudo; + Gtk::Window *windowMessDchp; + Gtk::Window *windowMessSudo; Gtk::Popover *popCalendar; Gtk::Calendar *cldrDate; Gtk::Label *lblMessage; @@ -77,12 +78,12 @@ class MainWindow : public Gtk::ApplicationWindow { Gtk::Label *lblSynchronizeBtn; Gtk::Label *lblTimeBios; Gtk::Label *lblSave; - Gtk::Label *lblDownload; + Gtk::Label *lblLoad; Gtk::Button *btnHardwareTime; Gtk::CheckButton *cbxSynchronizeNtp; Gtk::Entry *txtNtpServer; Gtk::Entry *txtDate; - Gtk::Button *btnDownload; + Gtk::Button *btnLoad; Gtk::Button *btnSave; Gtk::Button *btnSettings; Gtk::AboutDialog *aboutWindows; @@ -96,8 +97,8 @@ class MainWindow : public Gtk::ApplicationWindow { Gtk::MenuItem *btnSaveLocalGlob; Gtk::MenuItem *btnSaveLocal; Gtk::MenuItem *btnSaveGlob; - Gtk::MenuItem *btnDonwlolGlob; - Gtk::MenuItem *btnDonwlodLocal; + Gtk::MenuItem *btnLoadGlob; + Gtk::MenuItem *btnLoadLocal; Gtk::MenuItem *btnAbout; Gtk::MenuItem *btnSynopsis; Gtk::HeaderBar *headerBar; @@ -110,7 +111,7 @@ class MainWindow : public Gtk::ApplicationWindow { Gtk::Widget *standartHead; Gtk::Widget *plugBox; Gtk::Window *window; - Gtk::Image *imgDonwload; + Gtk::Image *imgLoad; Gtk::Image *imgSave; Gtk::Image *imgSettings; @@ -120,11 +121,11 @@ class MainWindow : public Gtk::ApplicationWindow { string version_application = "1.3"; int error_info = 0; int warning_info = 0; + string cmd_error = ""; int hour; int minute; string str_region = ""; string str_zone = ""; - bool bool_close_banner_info = true; template struct Result{ Type response; @@ -132,23 +133,24 @@ class MainWindow : public Gtk::ApplicationWindow { }; vector array_region_local; vector array_region; + std::map map_error; public: MainWindow(BaseObjectType* obj, Glib::RefPtr const& builder); MainWindow(Glib::RefPtr const& builder); virtual ~MainWindow() = default; + void log_mess_error(string &cmd); void hardware_clock_global(string &local, string &etc); void info_warning_error(int mess); void synopsis_show(); - void entry_hardware_clock(string &cmd, string &cmd_default); - void entry_hardware_clock_default(string &cmd_default); + void entry_hardware_clock(string &cmd); void save_global_local_cfg(); void fill_in_reg_zone(string &cmd); - void download_globl_cfg(); + void load_globl_cfg(); void save_local_cfg(); void save_global_cfg(); void save_Dhcp(string &cmd_default, string &cmd_dhcp, string &remove, string &cmd_set_ntp); - void download_local_cfg(); + void load_local_cfg(); void post_entry_data(); void lacalization(); void settings(); diff --git a/source/ubl-util-standard.c b/source/ubl-util-standard.c index 8cff122..ef040bd 100644 --- a/source/ubl-util-standard.c +++ b/source/ubl-util-standard.c @@ -52,6 +52,12 @@ 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),"primary-toolbar"); } if (right_plug_id>0&&RightWidget){ GtkWidget *plug=gtk_plug_new(right_plug_id); @@ -64,6 +70,13 @@ 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),"primary-toolbar"); + } } #endif \ No newline at end of file diff --git a/style.css b/style.css index fadccb5..65d31d4 100644 --- a/style.css +++ b/style.css @@ -2,7 +2,7 @@ background-color: #ea9999; } .cssboxColor1{ - background: url("/usr/share/ubl-settings-datetime/images/bg_top.png") no-repeat; + background: url("/usr/share/icons/hicolor/scalable/emblems/bg_top.png") no-repeat; } .boxInfoMessOK{ background-color: #f3f0ac; @@ -71,8 +71,30 @@ margin-bottom:0px; } -.bkim{ - background-image: -gtk-gradient(linear, +.bkimHeadBar{ + opacity:1.0; +} + +.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; +} + +.button { + background-image: -gtk-gradient(linear, left top, left bottom, from(@entry_background_a), color-stop(0.20, @entry_background_b), diff --git a/ubl-settings-datetime.desktop b/ubl-settings-datetime.desktop index 6ed43e7..edc26a9 100644 --- a/ubl-settings-datetime.desktop +++ b/ubl-settings-datetime.desktop @@ -8,7 +8,7 @@ Comment=Date time settings Comment[ru]=Приложение для настройки даты и времени Type=Application Exec=pkexec ubl-settings-datetime -Icon=ubl-settings-datetime +Icon=ru.ublinux.ubl-settings-datetime Terminal=false X-XfcePluggable=true X-UBLPluggable=true diff --git a/ubl-settings-datetime.glade b/ubl-settings-datetime.glade index 6fdf5c9..d179374 100644 --- a/ubl-settings-datetime.glade +++ b/ubl-settings-datetime.glade @@ -11,6 +11,8 @@ ubl-settings-datetime dialog True + False + False ubl-settings-datetime 1.2 Copyright © 2023 - UBSoft Software LLC @@ -21,7 +23,7 @@ Подробнее в <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, версии 2 или позднее</a>. UBGroup UBGroup - ubl-settings-datetime + ru.ublinux.ubl-settings-datetime True gpl-2-0 @@ -56,22 +58,20 @@ False 4 - + True False - Download local - True + Load global configuration - + True False - Download global - True + Load local configuration @@ -89,7 +89,6 @@ True False Help - True @@ -99,8 +98,7 @@ True False - About the program - True + About @@ -118,29 +116,26 @@ True False Save to global and local configuration - True - + True False - Save to local configuration - True + Save global configuration - + True False - Save to Global configuration - True + Save local configuration @@ -173,7 +168,8 @@ 5 6 6 - gtk-missing-image + 25 + 1 False @@ -231,7 +227,7 @@ 6 6 69 - ubl-settings-datetime + ru.ublinux.ubl-settings-datetime False @@ -971,6 +967,7 @@ Format: DD.MM.YYYY 5 5 5 + 1 False ubl-settings-datetime @@ -987,7 +984,7 @@ Format: DD.MM.YYYY 5 5 32 - ubl-settings-datetime + ru.ublinux.ubl-settings-datetime @@ -995,7 +992,7 @@ Format: DD.MM.YYYY True False - + True True False @@ -1008,14 +1005,14 @@ Format: DD.MM.YYYY True False - + True False 5 5 5 5 - Download + Load False @@ -1024,7 +1021,7 @@ Format: DD.MM.YYYY - + True False pan-down-symbolic @@ -1044,9 +1041,6 @@ Format: DD.MM.YYYY 0 - 1 @@ -1132,9 +1126,6 @@ Format: DD.MM.YYYY 1 - end @@ -1191,9 +1182,10 @@ Format: DD.MM.YYYY - + False Внимание! + ru.ublinux.ubl-settings-datetime dialog @@ -1272,10 +1264,12 @@ Format: DD.MM.YYYY - + False + popup Внимание! center + ru.ublinux.ubl-settings-datetime dialog diff --git a/ubl-settings-datetime_ru.po b/ubl-settings-datetime_ru.po index 8dccb5f..7472b4e 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 "Copyright © UBSoft LLC, 2022 - " +msgstr "Авторские права © ООО \"Юбисофт\", 2022 - " + msgid "Select the method of hardware time synchronization" msgstr "Выберите способ синхронизации аппаратного времени" @@ -55,6 +58,9 @@ msgstr "По умолчанию" msgid "The program must be run with \nsuperuser privileges!" msgstr "Программа должна быть запущена с правами \nсуперпользователя!" +msgid "The program must be run as root" +msgstr "Программа должна быть запущена с правами суперпользователя!" + msgid "Manual" msgstr "Вручную" @@ -71,7 +77,7 @@ msgid "Successfully saved local and global configuration" msgstr "Успешно сохранена локальная и глобальная конфигурация" msgid "Error saved local and global configuration" -msgstr "Ошибка сохранена локальной и глобальной конфигурации" +msgstr "Ошибка сохранения локальной и глобальной конфигурации" msgid "Settings the date and time" msgstr "Настройки даты и времени" @@ -1664,24 +1670,24 @@ msgid "Save" msgstr "Сохранить" msgid "Save to global and local configuration" -msgstr "Сохранить в глобальную и локальную конфигурацию" +msgstr "Сохранить глобальную и локальную конфигурацию" -msgid "Save to Global configuration" -msgstr "Сохранить в глобальную конфигурацию" +msgid "Save global configuration" +msgstr "Сохранить глобальную конфигурацию" -msgid "Save to local configuration" -msgstr "Сохранить в локальную конфигурацию" +msgid "Save local configuration" +msgstr "Сохранить локальную конфигурацию" -msgid "Download global" -msgstr "Загрузить глобально" +msgid "Load global configuration" +msgstr "Загрузить глобальную конфигурацию" -msgid "Download local" -msgstr "Загрузить локально" +msgid "Load local configuration" +msgstr "Загрузить локальную конфигурацию" msgid "Disabled" msgstr "Отключено" -msgid "Download" +msgid "Load" msgstr "Загрузить" msgid "Argument not recognized\n" @@ -1759,12 +1765,24 @@ msgstr "Остров Пасхи" msgid "Andorra" msgstr "Андорра" -msgid "About the program" +msgid "About" msgstr "О программе" msgid "Help" msgstr "Справка" +msgid "Date and Time" +msgstr "Дата и Время" + +msgid ": \"Hardware time\"" +msgstr ": \"Аппаратное время\"" + +msgid ": \"Time Zone\"" +msgstr ": \"Временная зона\"" + +msgid ": \"Date\"" +msgstr ": \"Дата\"" + msgid "Local configuration reading error" msgstr "Ошибка чтения локальной конфигурации"