diff --git a/Makefile b/Makefile
index 7d04dae..e6d9f93 100644
--- a/Makefile
+++ b/Makefile
@@ -117,6 +117,10 @@ install: check uninstall
@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/" alert.svg
+ @install -Dm644 -t "${pkgdir}/usr/share/${pkgname}/images/" checked.svg
+ @install -Dm644 -t "${pkgdir}/usr/share/${pkgname}/images/" warning.svg
+ @install -Dm644 -t "${pkgdir}/usr/share/${pkgname}/images/" close.svg
@gtk-update-icon-cache -fiq /usr/share/icons/hicolor/
@update-desktop-database --quiet 2>/dev/null
@touch /usr/share/applications
diff --git a/alert.svg b/alert.svg
new file mode 100644
index 0000000..c14c381
--- /dev/null
+++ b/alert.svg
@@ -0,0 +1,55 @@
+
+
diff --git a/checked.svg b/checked.svg
new file mode 100644
index 0000000..7956b34
--- /dev/null
+++ b/checked.svg
@@ -0,0 +1,327 @@
+
+
diff --git a/close.svg b/close.svg
new file mode 100644
index 0000000..d869d85
--- /dev/null
+++ b/close.svg
@@ -0,0 +1,54 @@
+
+
diff --git a/source/ubl-settings-datetime.cc b/source/ubl-settings-datetime.cc
index 36a39f7..f40b2d7 100644
--- a/source/ubl-settings-datetime.cc
+++ b/source/ubl-settings-datetime.cc
@@ -78,8 +78,11 @@ void MainWindow::settings(){
btnBoxAboutDialog->set_visible(false);
this->event();
this->parse_text_date();
- btnSaveGlobl->set_sensitive(false);
+ this->download_globl_cfg();
this->download_local_cfg();
+ orevrlayInfo->add_overlay(*boxInfoError);
+ imgInfo->set("/usr/share/ubl-settings-datetime/images/checked.svg");
+ imageCloseInfo->set("/usr/share/ubl-settings-datetime/images/close.svg");
}
else{
btnSaveLocal->set_sensitive(false);
@@ -112,14 +115,6 @@ void MainWindow::settings(){
}
-bool MainWindow::gui_set_orientation(GdkEventConfigure* event){
- if (event){}
- //int w;
- //w = this->get_width();
- //popWarning->set_default_widget(w);
- return false;
-
-}
int MainWindow::check_root(){
if (geteuid()!=0){
@@ -131,12 +126,12 @@ int MainWindow::check_root(){
}
void MainWindow::lacalization(){
- //aboutWindows->set_title(_(""));
- aboutWindows->set_comments(_("Settings the date and time"));
+ btnSynopsis->set_label(_("Synopsis"));
+ aboutProgram->set_label(_("About the program"));
+ aboutWindows->set_comments(_("Setting the date and time"));
lblSave->set_label(_("Save"));
lblDownload->set_label(_("Download"));
btnDownloadGlobal->set_label(_("Download global"));
- btnDownloadlocal->set_label(_("Download local"));
btnSaveLocal->set_label(_("Save local"));
btnSaveGlobl->set_label(_("Save global"));
txtDate->set_tooltip_text(_("Date of\nFormat: DD.MM.YYYY"));
@@ -155,13 +150,9 @@ void MainWindow::lacalization(){
lblZone->set_text(_("Zone"));
lblSynchronizeBtn->set_text(_("Sync by"));
this->set_title(_("ubl-settings-datetime"));
- windowsNnpClose->set_title(_("Warning!"));
mess_sudo->set_title(_("Warning!"));
mess_dchp->set_title(_("Warning!"));
lblTimeBios->set_text(_("Synchronize hardware time"));
- lblBanerStopNtp->set_text(_("Active service detected\nAutomatic time and date synchronization service detected"));
- lblNtpStop->set_text(_("Stop the synchronization service"));
- lblNtpClose->set_text(_("Close"));
//_lblSynchronizebChk->set_text(_("Synchronize via NTP"));
}
@@ -207,7 +198,22 @@ void MainWindow::add_CSS(){
//Glib::RefPtr context_button = btnHardwareTime->get_style_context();
context->add_class("cssboxColor1");
context_lbl_head->add_class("textHead");
- //context_button->add_class("textHead");
+ Glib::RefPtr boxInfo = boxInfoError->get_style_context();
+ boxInfo->add_class("boxInfoOK");
+ Glib::RefPtr btnWarngingCloseCss = btnWarngingClose->get_style_context();
+ btnWarngingCloseCss->add_class("boxInfoOK");
+}
+
+void MainWindow::info_status_app(string style){
+ Glib::RefPtr cssProvider = Gtk::CssProvider::create();
+ cssProvider->load_from_path(path_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 boxInfo = boxInfoError->get_style_context();
+ boxInfo->add_class(style);
+ Glib::RefPtr btnWarngingCloseCss = btnWarngingClose->get_style_context();
+ btnWarngingCloseCss->add_class(style);
}
void MainWindow::get_builder(){
@@ -242,12 +248,6 @@ void MainWindow::get_builder(){
builder->get_widget("mess_sudo",mess_sudo);
builder->get_widget("lblMessageSudo",lblMessageSudo);
builder->get_widget("btnMessCloseSudo",btnMessCloseSudo);
- builder->get_widget("windowsNnpClose",windowsNnpClose);
- builder->get_widget("btnNtpStop",btnNtpStop);
- builder->get_widget("btnNtpWinClose",btnNtpWinClose);
- builder->get_widget("lblNtpStop",lblNtpStop);
- builder->get_widget("lblNtpClose",lblNtpClose);
- builder->get_widget("lblBanerStopNtp",lblBanerStopNtp);
builder->get_widget("btnSaveLocal",btnSaveLocal);
builder->get_widget("btnSaveGlobl",btnSaveGlobl);
builder->get_widget("lblSave",lblSave);
@@ -255,12 +255,17 @@ void MainWindow::get_builder(){
builder->get_widget("btnDownload",btnDownload);
builder->get_widget("lblDownload",lblDownload);
builder->get_widget("btnDownloadGlobal", btnDownloadGlobal);
- builder->get_widget("btnDownloadlocal", btnDownloadlocal);
builder->get_widget("btnSettings", btnSettings);
builder->get_widget("aboutWindows", aboutWindows);
builder->get_widget("btnBoxAboutDialog", btnBoxAboutDialog);
-
-
+ builder->get_widget("btnSynopsis", btnSynopsis);
+ builder->get_widget("aboutProgram", aboutProgram);
+ builder->get_widget("boxInfoError", boxInfoError);
+ builder->get_widget("orevrlayInfo", orevrlayInfo);
+ builder->get_widget("btnWarngingClose", btnWarngingClose);
+ builder->get_widget("lblWarning", lblWarning);
+ builder->get_widget("imgInfo", imgInfo);
+ builder->get_widget("imageCloseInfo", imageCloseInfo);
this->add_CSS();
}
void MainWindow::gui_exit(){
@@ -284,26 +289,37 @@ void MainWindow::event(){
cbRegion->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::append_zone));
cldrDate->signal_day_selected_double_click().connect(sigc::mem_fun(*this, &MainWindow::get_calendar));
mess_sudo->signal_delete_event().connect(sigc::mem_fun(*this, &MainWindow::gui_exit_2));
- btnNtpWinClose->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::wind_close_ntp));
- btnNtpStop->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::stop_ntp));
btnDownloadGlobal->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::download_globl_cfg));
btnSaveLocal->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::save_local_cfg));
btnSaveGlobl->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::save_global_cfg));
- btnDownloadlocal->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::download_local_cfg));
- btnSettings->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::about_Dialog_show));
- signal_configure_event().connect(sigc::mem_fun(*this, &MainWindow::gui_set_orientation), false);
+ aboutProgram->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::about_Dialog_show));
+ btnDownload->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::download_local_cfg));
+ btnSynopsis->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::synopsis_show));
+ btnWarngingClose->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::close_banner_info));
+ Glib::signal_timeout().connect(sigc::mem_fun(*this, &MainWindow::close_banner_info_timer), 10000);
}
-void MainWindow::about_Dialog_show(){
- aboutWindows->show();
+bool MainWindow::close_banner_info_timer(){
+ if (bool_close_banner_info==true){
+ boxInfoError->hide();
+ }
+
+ return false;
}
+void MainWindow::close_banner_info(){
+ boxInfoError->hide();
+}
-void MainWindow::download_globl_cfg(){
- this->entry_dhcp_mess();
- string cmd = "/usr/bin/ubconfig --default --source global get clock ZONE";
- this->fill_in_reg_zone(cmd);
- btnSaveGlobl->set_sensitive(true);
+void MainWindow::synopsis_show(){
+ //wrapper_system("xdg-open https://wiki.ublinux.ru/ru/home");
+ error_info=0;
+ warning_info=0;
+}
+
+
+void MainWindow::about_Dialog_show(){
+ aboutWindows->show();
}
void MainWindow::download_local_cfg(){
@@ -311,45 +327,120 @@ void MainWindow::download_local_cfg(){
this->fill_in_reg_zone(cmd);
this->update_hour_minute();
this->update_calendar();
+ info_warning_error(0);
+}
+
+void MainWindow::download_globl_cfg(){
+ this->entry_dhcp_mess();
+ string cmd = "/usr/bin/ubconfig --default --source global get clock ZONE";
+ this->fill_in_reg_zone(cmd);
+ info_warning_error(1);
}
void MainWindow::save_local_cfg(){
string cmd = "ubconfig --target system set clock ZONE=";
this->enter_zone(cmd);
+ info_warning_error(2);
}
void MainWindow::save_global_cfg(){
string cmd = "/usr/bin/ubconfig --target global set clock ZONE=";
this->enter_zone(cmd);
this->save_Dhcp();
+ info_warning_error(3);
}
-void MainWindow::wind_close_ntp(){
- windowsNnpClose->hide();
+void MainWindow::info_warning_error(int mess){
+ boxInfoError->show();
+ if (error_info!=0){
+ imgInfo->set("/usr/share/ubl-settings-datetime/images/alert.svg");
+ bool_close_banner_info=false;
+ info_status_app("boxInfoError");
+ error_info=0;
+ warning_info=0;
+ if (mess == 0){
+ lblWarning->set_text(_("Local configuration reading error"));
+ }
+ else if (mess == 1){
+ lblWarning->set_text(_("Global configuration read error"));
+ }
+ else if (mess == 2){
+ lblWarning->set_text(_("Local configuration write error"));
+ }
+ else if (mess == 3){
+ lblWarning->set_text(_("Global configuration write error"));
+ }
+ }
+ else if (warning_info!=0){
+ imgInfo->set("/usr/share/ubl-settings-datetime/images/warning.svg");
+ bool_close_banner_info=false;
+ info_status_app("boxInfoWarning");
+ error_info=0;
+ warning_info=0;
+ if (mess == 0){
+ lblWarning->set_text(_("Local configuration reading error"));
+ }
+ else if (mess == 1){
+ lblWarning->set_text(_("Global configuration read error"));
+ }
+ else if (mess == 2){
+ lblWarning->set_text(_("Local configuration write error"));
+ }
+ else if (mess == 3){
+ lblWarning->set_text(_("Global configuration write error"));
+ }
+
+ }
+ else{
+ imgInfo->set("/usr/share/ubl-settings-datetime/images/checked.svg");
+ bool_close_banner_info=true;
+ info_status_app("boxInfoOK");
+ if (mess == 0){
+ lblWarning->set_text(_("Local configuration downloaded successfully"));
+ }
+ else if (mess == 1){
+ lblWarning->set_text(_("Global configuration downloaded successfully"));
+ }
+ else if (mess == 2){
+ lblWarning->set_text(_("Local configuration successfully written"));
+ }
+ else if (mess == 3){
+ lblWarning->set_text(_("Global configuration successfully written"));
+ }
+ }
}
+
void MainWindow::stop_ntp(){
string cmd = "SEL_SERVICE=\"systemd-timesyncd\"; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service; ";
- response_cmd=system(cmd.c_str());
+ wrapper_system(cmd);
cmd ="SEL_SERVICE=\"ntpd\"; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ${SEL_SERVICE}; ";
- response_cmd=system(cmd.c_str());
+ wrapper_system(cmd);
cmd ="SEL_SERVICE=\"ntpdate\"; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ${SEL_SERVICE}; ";
- response_cmd=system(cmd.c_str());
+ wrapper_system(cmd);
cmd = "SEL_SERVICE=\"chronyd\"; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ${SEL_SERVICE}; ";
- response_cmd=system(cmd.c_str());
+ wrapper_system(cmd);
cmd ="SEL_SERVICE=\"openntpd\"; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ntpd; ";
- response_cmd=system(cmd.c_str());
+ wrapper_system(cmd);
cmd ="SEL_SERVICE=\"ptp4l\"; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ${SEL_SERVICE}; ";
- response_cmd=system(cmd.c_str());
+ wrapper_system(cmd);
cmd ="SEL_SERVICE=\"phc2sys\"; systemctl --quiet is-active ${SEL_SERVICE}.service &>/dev/null && systemctl stop ${SEL_SERVICE}.service || pkill -9 ${SEL_SERVICE} ";
- response_cmd=system(cmd.c_str());
+ wrapper_system(cmd);
+
+}
+
+void MainWindow::wrapper_system(string cmd){
+ int response_cmd = system(cmd.c_str());
+ if (response_cmd!=0){
+ error_info+=1;
+ }
}
void MainWindow::hardware_clock(){
string cmd = "hwclock --systohc";
- response_cmd=system(cmd.c_str());
+ wrapper_system(cmd);
}
void MainWindow::gui_mess_close(){
@@ -380,7 +471,7 @@ bool MainWindow::focus_ntp(){
}
if ((flag_error==false) && (flag_error_check_ntp==false)){
cmd = "/usr/bin/ubconfig set network NTPSERVERS=\"" + str_ntp + "\"";
- response_cmd = system(cmd.c_str());
+ wrapper_system(cmd);
}
else{
if (flag_error==true){
@@ -437,7 +528,6 @@ bool MainWindow::check_ntp(string &str_ntp){
for (size_t i = 0; i < str_ntp.size(); i++){
flag_error=false;
char_ntp[0] = str_ntp[i];
- cout << char_ntp << endl;
for (int index=0;index<11;index++){
if (index==10){
@@ -446,8 +536,6 @@ bool MainWindow::check_ntp(string &str_ntp){
else{
simvol = to_string(index);
}
- cout << (simvol==char_ntp) << endl;
- cout << simvol << " " << char_ntp << endl;
if (simvol==char_ntp){
flag_error=false;
@@ -487,16 +575,19 @@ struct MainWindow::Result MainWindow::wrapper_call(string cmd){
else{
obj_result.response = response;
obj_result.error = 1;
+ warning_info+=1;
}
}
else{
obj_result.response = response;
obj_result.error = 2;
+ warning_info+=1;
}
}
else{
obj_result.response = response;
obj_result.error = 3;
+ warning_info+=1;
}
return obj_result;
}
@@ -569,18 +660,18 @@ void MainWindow::save_Dhcp(){
}
else if (activ_index==0){
string cmd = "/usr/bin/ubconfig set network NTPSERVERS=default";
- response_cmd=system(cmd.c_str());
+ wrapper_system(cmd);
}
else if (activ_index==1){
string cmd = "/usr/bin/ubconfig set network NTPSERVERS=dhcp";
- response_cmd=system(cmd.c_str());
+ wrapper_system(cmd);
}
else if (activ_index==2){
this->focus_ntp();
}
else if (activ_index==3){
string cmd = "/usr/bin/ubconfig remove network NTPSERVERS";
- response_cmd=system(cmd.c_str());
+ wrapper_system(cmd);
}
}
@@ -747,7 +838,7 @@ void MainWindow::enter_zone(string &cmd){
str_zone=zone_text;
str_region=reg_text;
cmd = cmd + str_region + "/" + str_zone;
- response_cmd=system(cmd.c_str());
+ wrapper_system(cmd);
}
else{
str_zone="";
@@ -771,7 +862,6 @@ void MainWindow::parse_text_date(){
void MainWindow::append_region_zone(string region, string zone, Gtk::ComboBoxText *tmpCbReg, Gtk::ComboBoxText *tmpCbZone){
str_region=region;
- str_region_glob=region;
int index = 0;
Glib::ustring reg_local = "";
int size_vec = array_region_local.size();
@@ -892,7 +982,7 @@ void MainWindow::update_time_date(){
if (str_data==str_data_entry){
cmd = "date +%Y%m%d -s \"" + to_string(year)+
str_month+str_day+"\"";
- response_cmd=system(cmd.c_str());
+ wrapper_system(cmd);
txtDate->set_text(str_data);
year=0;
month=0;
@@ -912,7 +1002,7 @@ void MainWindow::update_time_date(){
cmd = "date +%T -s \""+
to_string(hour) + ":" + to_string(minute)
+ ":" + to_string(ltm->tm_sec) +"\"";
- response_cmd=system(cmd.c_str());
+ wrapper_system(cmd);
}
void MainWindow::post_entry_data(){
diff --git a/source/ubl-settings-datetime.h b/source/ubl-settings-datetime.h
index 322d986..5e82786 100644
--- a/source/ubl-settings-datetime.h
+++ b/source/ubl-settings-datetime.h
@@ -75,42 +75,37 @@ class MainWindow : public Gtk::ApplicationWindow {
Gtk::Label *lblTimeBios;
Gtk::Label *lblSave;
Gtk::Label *lblDownload;
- Gtk::Label *lblBanerStopNtp;
Gtk::Button *btnHardwareTime;
Gtk::CheckButton *cbxSynchronizeNtp;
- Gtk::Window *windowsNnpClose;
- Gtk::Button *btnNtpStop;
- Gtk::Button *btnNtpWinClose;
- Gtk::Label *lblNtpStop;
- Gtk::Label *lblNtpClose;
Gtk::Entry *txtNtpServer;
Gtk::Entry *txtDate;
- Gtk::Widget *btnDownload;
+ Gtk::MenuButton *btnDownload;
Gtk::MenuItem *btnSaveLocal;
- Gtk::MenuItem *btnSaveGlobl;
-
-
+ Gtk::MenuItem *btnSaveGlobl;
Gtk::MenuItem *btnDownloadGlobal;
- Gtk::MenuItem *btnDownloadlocal;
Gtk::AboutDialog *aboutWindows;
Gtk::ButtonBox *btnBoxAboutDialog;
- //Gtk::MenuButton *btnSave;
- //Gtk::MenuButton *btnDownload;
- Gtk::Button *btnSettings;
+ Gtk::MenuButton *btnSettings;
+ Gtk::MenuItem *btnSynopsis;
+ Gtk::MenuItem *aboutProgram;
+ Gtk::Widget *boxInfoError;
+ Gtk::Overlay *orevrlayInfo;
+ Gtk::Button *btnWarngingClose;
+ Gtk::Label *lblWarning;
+ Gtk::Image *imgInfo;
+ Gtk::Image *imageCloseInfo;
std::map > time_reg_map;
std::map > time_reg_map_local;
unsigned int year=0;
unsigned int month=0;
unsigned int day=0;
+ int error_info = 0;
+ int warning_info = 0;
int hour;
int minute;
string str_region="";
- string str_region_glob="";
- string str_txtDate;
- string strtxtNtpServer;
string str_zone="";
- string str_zoneGlob;
- int response_cmd;
+ bool bool_close_banner_info=true;
template
struct Result{
Type response;
@@ -123,6 +118,10 @@ class MainWindow : public Gtk::ApplicationWindow {
MainWindow(BaseObjectType* obj, Glib::RefPtr const& builder);
MainWindow(Glib::RefPtr const& builder);
virtual ~MainWindow() = default;
+ void info_warning_error(int mess);
+ bool close_banner_info_timer();
+ void close_banner_info();
+ void synopsis_show();
void fill_in_reg_zone(string &cmd);
void download_globl_cfg();
void about_Dialog_show();
@@ -162,8 +161,9 @@ class MainWindow : public Gtk::ApplicationWindow {
bool gui_exit_2(GdkEventAny* event);
void stop_ntp();
void wind_close_ntp();
+ void wrapper_system(string cmd);
+ void info_status_app(string style);
void wrapper_update_time_date();
- bool gui_set_orientation(GdkEventConfigure* event);
string zone_file_read(string zone);
void sort_zone(vector *time_reg_map_local,vector *time_reg_map);
array split_region_zone(string read_reg_zon_cfg);
diff --git a/style.css b/style.css
index 88c8a58..8a2e785 100644
--- a/style.css
+++ b/style.css
@@ -4,3 +4,14 @@
.textHead{
text-shadow: 1px 1px #ffffff;
}
+.boxInfoOK{
+ background-color:#6edf64;
+}
+
+.boxInfoWarning{
+ background-color: rgba(242, 255, 0, 1);
+}
+
+.boxInfoError{
+ background-color: rgba(255, 0, 0, 1);
+}
diff --git a/ubl-settings-datetime.glade b/ubl-settings-datetime.glade
index e4945fe..ce8e835 100644
--- a/ubl-settings-datetime.glade
+++ b/ubl-settings-datetime.glade
@@ -2,16 +2,6 @@
-
+
+
@@ -793,16 +876,16 @@ Format: DD.MM.YYYY
-
+
True
False
-
-
- False
-
-
- True
- False
- vertical
-
-
- True
- False
-
-
- True
- False
- 5
- 5
- 5
- 5
- 6
- 6
- 50
- emblem-important
-
-
- False
- True
- 0
-
-
-
-
- True
- False
- 5
- 5
- 5
- 5
- 6
- 6
- Active service detected
-Automatic time and date synchronization service detected
-
-
- True
- True
- 1
-
-
-
-
- True
- True
- 0
-
-
-
-
- True
- False
-
-
- True
- True
- True
- 5
- 5
- 5
- 5
- 6
- 6
-
-
- True
- False
-
-
- True
- False
- 5
- 5
- 5
- 5
- media-playback-stop
-
-
- False
- True
- 0
-
-
-
-
- True
- False
- Stop the synchronization service
-
-
- False
- True
- 1
-
-
-
-
-
-
- True
- True
- 0
-
-
-
-
- True
- True
- True
- 5
- 5
- 5
- 5
- 6
- 6
-
-
- True
- False
-
-
- True
- False
- 6
- 5
- 5
- 5
- window-close
-
-
- False
- True
- 0
-
-
-
-
- True
- False
- Close
-
-
- False
- True
- 1
-
-
-
-
-
-
- True
- True
- 1
-
-
-
-
- False
- True
- 1
-
-
-
-
-
diff --git a/ubl-settings-datetime_ru.po b/ubl-settings-datetime_ru.po
index ba88644..1bf5130 100644
--- a/ubl-settings-datetime_ru.po
+++ b/ubl-settings-datetime_ru.po
@@ -49,6 +49,9 @@ msgstr "Введите DHCP!"
msgid "OK"
msgstr "OK"
+msgid "Setting the date and time"
+msgstr "Настройка даты времени"
+
msgid "Settings the date and time"
msgstr "Настройки даты и времени"
@@ -1640,10 +1643,10 @@ msgid "Save"
msgstr "Сохранить"
msgid "Save global"
-msgstr "Сохранить глобально"
+msgstr "Сохранить в глобальную конфигурацию"
msgid "Save local"
-msgstr "Сохранить локально"
+msgstr "Сохранить в локальную конфигурацию"
msgid "Download global"
msgstr "Загрузить глобально"
@@ -1724,4 +1727,35 @@ msgid "EasterIsland"
msgstr "Остров Пасхи"
msgid "Andorra"
-msgstr "Андорра"
\ No newline at end of file
+msgstr "Андорра"
+
+msgid "About the program"
+msgstr "О программе"
+
+msgid "Synopsis"
+msgstr "Справка"
+
+msgid "Local configuration reading error"
+msgstr "Ошибка чтения локальной конфигурации"
+
+msgid "Local configuration write error"
+msgstr "Ошибка записи локальной конфигурации"
+
+msgid "Global configuration read error"
+msgstr "Ошибка чтения глобальной конфигурации"
+
+msgid "Global configuration write error"
+msgstr "Ошибка записи глобальной конфигурации"
+
+msgid "Local configuration downloaded successfully"
+msgstr "Успешно загружена локальная конфигурация"
+
+msgid "Global configuration downloaded successfully"
+msgstr "Успешно загружена глобальная конфигурация"
+
+msgid "Global configuration successfully written"
+msgstr "Успешно записана глобальная конфигурация"
+
+msgid "Local configuration successfully written"
+msgstr "Успешно записана локальная конфигурация"
+
diff --git a/warning.svg b/warning.svg
new file mode 100644
index 0000000..ab59be1
--- /dev/null
+++ b/warning.svg
@@ -0,0 +1,55 @@
+
+