diff --git a/source/main.cc b/source/main.cc index 46295a7..2363a00 100644 --- a/source/main.cc +++ b/source/main.cc @@ -25,11 +25,7 @@ int main(int argc, char* argv[]) { for (int i=1; iset_translation_domain(app_name); for (int i=0; iset_translation_domain(app_name); Glib::init(); Glib::OptionContext context; CmdArgParser parser{ diff --git a/source/ubl-settings-datetime.cc b/source/ubl-settings-datetime.cc index a64c36e..1fc22c6 100644 --- a/source/ubl-settings-datetime.cc +++ b/source/ubl-settings-datetime.cc @@ -64,15 +64,30 @@ MainWindow::MainWindow(Glib::RefPtr const& builder) { void MainWindow::settings(){ year=0, month=0, day=0; this->get_builder(); - this->lacalization(); - _numTimeHrs->set_range(0,23); - _numTimeMin->set_range(0,59); - _numTimeHrs->set_increments(1.0,1.0); - _numTimeMin->set_increments(1.0,1.0); - this->get_config(); - this->flag_block_gui(); this->event(); - this->parse_text_date(); + if (this->check_root()==0){ + this->lacalization(); + _numTimeHrs->set_range(0,23); + _numTimeMin->set_range(0,59); + _numTimeHrs->set_increments(1.0,1.0); + _numTimeMin->set_increments(1.0,1.0); + this->get_config(); + this->flag_block_gui(); + this->parse_text_date(); + } + else{ + this->hide(); + //exit(1); + } +} + +int MainWindow::check_root(){ + if (geteuid()!=0){ + _lblMessageSudo->set_text(gettext("The program must be run with \nsuperuser privileges!")); + _mess_sudo->show(); + return 1; + } + return 0; } void MainWindow::lacalization(){ @@ -189,15 +204,30 @@ void MainWindow::get_builder(){ builder->get_widget("lblDateTimeSettingGlob",_lblDateTimeSettingGlob); 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("btnMessCloseSudo",_btnMessCloseSudo); + + //builder->get_widget("cbxSynchronizeNtp",_cbxSynchronizeNtp); this->add_CSS(); } +void MainWindow::gui_exit(){ + exit(1); +} + +bool MainWindow::gui_exit_2(GdkEventAny* event){ + if (event!=NULL){} + exit(1); + return true; +} void MainWindow::event(){ //_cbxSynchronizeNtpGlob->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::set_ntp_toggle)); _btnHardwareTime->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::hardware_clock)); _btnMessClose->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::gui_mess_close)); + _btnMessCloseSudo->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::gui_exit)); //_cldrDate->signal_day_selected().connect(sigc::mem_fun(*this, &MainWindow::get_calendar)); _cbxSynchronizeNtpGlob->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::set_ntp_toggle_glob)); _btnUpdateDateTime->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::update_time_date)); @@ -209,6 +239,7 @@ void MainWindow::event(){ _cbZoneGlob->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::enter_zone_glob)); _txtNtpServer->signal_focus_out_event().connect(sigc::mem_fun(*this, &MainWindow::focus_ntp)); _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)); } void MainWindow::set_ntp_toggle(){ diff --git a/source/ubl-settings-datetime.h b/source/ubl-settings-datetime.h index 4dd0cc9..20ff007 100644 --- a/source/ubl-settings-datetime.h +++ b/source/ubl-settings-datetime.h @@ -75,11 +75,15 @@ class MainWindow : public Gtk::ApplicationWindow { void parse_text_date(); void hardware_clock(); void set_ntp_toggle_glob(); + int check_root(); + void gui_exit(); + bool gui_exit_2(GdkEventAny* event); vector split(const std::string &s, char delim); private: Glib::RefPtr builder; Gtk::Button *_btnUpdateDateTime; Gtk::Button *_btnChooseDate; + Gtk::Button *_btnMessCloseSudo; Gtk::Button *_btnMessClose; Gtk::ComboBoxText *_cbDhcp; Gtk::SpinButton *_numTimeHrs; @@ -93,9 +97,11 @@ class MainWindow : public Gtk::ApplicationWindow { Gtk::ComboBoxText *_cbZoneGlob; Gtk::Entry *_txtNtpServer; Gtk::Window *_mess_dchp; + Gtk::Window *_mess_sudo; Gtk::Popover *_popCalendar; Gtk::Calendar *_cldrDate; Gtk::Label *_lblMessage; + Gtk::Label *_lblMessageSudo; Gtk::Label *_lblDateTimeSetting; Gtk::Label *_lblHead; Gtk::Label *_lblTime; diff --git a/ubl-settings-datetime.desktop b/ubl-settings-datetime.desktop index 2225ea4..87d86f7 100644 --- a/ubl-settings-datetime.desktop +++ b/ubl-settings-datetime.desktop @@ -7,7 +7,7 @@ GenericName[ru]=Настройка даты и времени Comment=Date time settings Comment[ru]=Приложение для настройки даты и времени Type=Application -Exec=ubl-settings-datetime +Exec=pkexec ubl-settings-datetime Icon=ubl-settings-datetime Terminal=false Categories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings; \ No newline at end of file diff --git a/ubl-settings-datetime.glade b/ubl-settings-datetime.glade index f7021fe..a919ff1 100644 --- a/ubl-settings-datetime.glade +++ b/ubl-settings-datetime.glade @@ -5,6 +5,7 @@ False Внимание! + dialog True @@ -42,7 +43,7 @@ center 6 6 - Введите DHCP ! + Enter DHCP ! True @@ -79,6 +80,89 @@ + + False + Внимание! + center + dialog + + + True + False + vertical + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 50 + gtk-dialog-warning + + + True + True + 0 + + + + + 160 + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Enter DHCP ! + + + True + True + 1 + + + + + False + True + 1 + + + + + OK + True + True + True + 5 + 5 + 5 + 5 + 3 + 3 + + + False + True + 1 + + + + + False Настройки даты и времени diff --git a/ubl-settings-datetime_ru.po b/ubl-settings-datetime_ru.po index 62bf046..7f7f769 100644 --- a/ubl-settings-datetime_ru.po +++ b/ubl-settings-datetime_ru.po @@ -6,6 +6,9 @@ msgid "" msgstr "" +msgid "The program must be run with \nsuperuser privileges!" +msgstr "Программа должна быть запущена с правами \nсуперпользователя!" + msgid "Manually" msgstr "Вручную"