Исправлена логика в pkexec, исправлен desktop файл

pull/18/head
Igor Belitskiy 3 years ago
parent 2fe93244d1
commit d6ca8af99c

@ -25,11 +25,7 @@ int main(int argc, char* argv[]) {
for (int i=1; i<argc; i++){ for (int i=1; i<argc; i++){
str_cmd_argv+= to_string(*argv[i]) + " "; str_cmd_argv+= to_string(*argv[i]) + " ";
} }
if (geteuid()!=0){
string cmd = "pkexec " + app_name + " " + str_cmd_argv ;
system(cmd.c_str());
return 0;
}
setlocale(LC_ALL, ""); setlocale(LC_ALL, "");
bindtextdomain("ubl-settings-datetime", "/usr/share/locale/"); bindtextdomain("ubl-settings-datetime", "/usr/share/locale/");
bind_textdomain_codeset("ubl-settings-datetime", "UTF-8"); bind_textdomain_codeset("ubl-settings-datetime", "UTF-8");
@ -41,7 +37,6 @@ int main(int argc, char* argv[]) {
int len_argv = 1; int len_argv = 1;
auto app = Gtk::Application::create(len_argv, argv, "org.gtkmm.example.plug"); 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"); auto builder = Gtk::Builder::create_from_file(path_glade + "ubl-settings-datetime.glade");
builder->set_translation_domain(app_name);
for (int i=0; i<argc; i++){ for (int i=0; i<argc; i++){
str_argv = argv[i]; str_argv = argv[i];
if (str_argv=="--help"){ if (str_argv=="--help"){
@ -71,7 +66,6 @@ int main(int argc, char* argv[]) {
else{ else{
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example.plug"); auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example.plug");
auto builder = Gtk::Builder::create_from_file(path_glade + "ubl-settings-datetime.glade"); auto builder = Gtk::Builder::create_from_file(path_glade + "ubl-settings-datetime.glade");
builder->set_translation_domain(app_name);
Glib::init(); Glib::init();
Glib::OptionContext context; Glib::OptionContext context;
CmdArgParser parser{ CmdArgParser parser{

@ -64,15 +64,30 @@ MainWindow::MainWindow(Glib::RefPtr<Gtk::Builder> const& builder) {
void MainWindow::settings(){ void MainWindow::settings(){
year=0, month=0, day=0; year=0, month=0, day=0;
this->get_builder(); 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->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(){ void MainWindow::lacalization(){
@ -189,15 +204,30 @@ void MainWindow::get_builder(){
builder->get_widget("lblDateTimeSettingGlob",_lblDateTimeSettingGlob); builder->get_widget("lblDateTimeSettingGlob",_lblDateTimeSettingGlob);
builder->get_widget("lblTimeBios",_lblTimeBios); builder->get_widget("lblTimeBios",_lblTimeBios);
builder->get_widget("btnHardwareTime",_btnHardwareTime); 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); //builder->get_widget("cbxSynchronizeNtp",_cbxSynchronizeNtp);
this->add_CSS(); 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(){ void MainWindow::event(){
//_cbxSynchronizeNtpGlob->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::set_ntp_toggle)); //_cbxSynchronizeNtpGlob->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::set_ntp_toggle));
_btnHardwareTime->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::hardware_clock)); _btnHardwareTime->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::hardware_clock));
_btnMessClose->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::gui_mess_close)); _btnMessClose->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::gui_mess_close));
_btnMessCloseSudo->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::gui_exit));
//_cldrDate->signal_day_selected().connect(sigc::mem_fun(*this, &MainWindow::get_calendar)); //_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)); _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)); _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)); _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)); _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)); _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(){ void MainWindow::set_ntp_toggle(){

@ -75,11 +75,15 @@ class MainWindow : public Gtk::ApplicationWindow {
void parse_text_date(); void parse_text_date();
void hardware_clock(); void hardware_clock();
void set_ntp_toggle_glob(); void set_ntp_toggle_glob();
int check_root();
void gui_exit();
bool gui_exit_2(GdkEventAny* event);
vector<std::string> split(const std::string &s, char delim); vector<std::string> split(const std::string &s, char delim);
private: private:
Glib::RefPtr<Gtk::Builder> builder; Glib::RefPtr<Gtk::Builder> builder;
Gtk::Button *_btnUpdateDateTime; Gtk::Button *_btnUpdateDateTime;
Gtk::Button *_btnChooseDate; Gtk::Button *_btnChooseDate;
Gtk::Button *_btnMessCloseSudo;
Gtk::Button *_btnMessClose; Gtk::Button *_btnMessClose;
Gtk::ComboBoxText *_cbDhcp; Gtk::ComboBoxText *_cbDhcp;
Gtk::SpinButton *_numTimeHrs; Gtk::SpinButton *_numTimeHrs;
@ -93,9 +97,11 @@ class MainWindow : public Gtk::ApplicationWindow {
Gtk::ComboBoxText *_cbZoneGlob; Gtk::ComboBoxText *_cbZoneGlob;
Gtk::Entry *_txtNtpServer; Gtk::Entry *_txtNtpServer;
Gtk::Window *_mess_dchp; Gtk::Window *_mess_dchp;
Gtk::Window *_mess_sudo;
Gtk::Popover *_popCalendar; Gtk::Popover *_popCalendar;
Gtk::Calendar *_cldrDate; Gtk::Calendar *_cldrDate;
Gtk::Label *_lblMessage; Gtk::Label *_lblMessage;
Gtk::Label *_lblMessageSudo;
Gtk::Label *_lblDateTimeSetting; Gtk::Label *_lblDateTimeSetting;
Gtk::Label *_lblHead; Gtk::Label *_lblHead;
Gtk::Label *_lblTime; Gtk::Label *_lblTime;

@ -7,7 +7,7 @@ GenericName[ru]=Настройка даты и времени
Comment=Date time settings Comment=Date time settings
Comment[ru]=Приложение для настройки даты и времени Comment[ru]=Приложение для настройки даты и времени
Type=Application Type=Application
Exec=ubl-settings-datetime Exec=pkexec ubl-settings-datetime
Icon=ubl-settings-datetime Icon=ubl-settings-datetime
Terminal=false Terminal=false
Categories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings; Categories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings;

@ -5,6 +5,7 @@
<object class="GtkWindow" id="mess_dchp"> <object class="GtkWindow" id="mess_dchp">
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="title" translatable="yes">Внимание!</property> <property name="title" translatable="yes">Внимание!</property>
<property name="type-hint">dialog</property>
<child> <child>
<object class="GtkBox"> <object class="GtkBox">
<property name="visible">True</property> <property name="visible">True</property>
@ -42,7 +43,7 @@
<property name="valign">center</property> <property name="valign">center</property>
<property name="margin-top">6</property> <property name="margin-top">6</property>
<property name="margin-bottom">6</property> <property name="margin-bottom">6</property>
<property name="label" translatable="yes">Введите DHCP !</property> <property name="label" translatable="yes">Enter DHCP !</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
@ -79,6 +80,89 @@
</object> </object>
</child> </child>
</object> </object>
<object class="GtkWindow" id="mess_sudo">
<property name="can-focus">False</property>
<property name="title" translatable="yes">Внимание!</property>
<property name="window-position">center</property>
<property name="type-hint">dialog</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="pixel-size">50</property>
<property name="icon-name">gtk-dialog-warning</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="lblMessageSudo">
<property name="width-request">160</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="label" translatable="yes">Enter DHCP !</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="btnMessCloseSudo">
<property name="label" translatable="yes">OK</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">3</property>
<property name="margin-bottom">3</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkWindow" id="window"> <object class="GtkWindow" id="window">
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="title" translatable="yes" context="Settings the date and time" comments="Date and Time Settings">Настройки даты и времени</property> <property name="title" translatable="yes" context="Settings the date and time" comments="Date and Time Settings">Настройки даты и времени</property>

@ -6,6 +6,9 @@
msgid "" msgid ""
msgstr "" msgstr ""
msgid "The program must be run with \nsuperuser privileges!"
msgstr "Программа должна быть запущена с правами \nсуперпользователя!"
msgid "Manually" msgid "Manually"
msgstr "Вручную" msgstr "Вручную"

Loading…
Cancel
Save