From 699be1fcca20dd6a0cf19f023d3b5118c8ab0ce1 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 10 Mar 2023 11:23:59 +0600 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=B3=D1=80=D1=83=D0=BF=D0=BF=D1=8B=20wheel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ublexec.cc | 83 ++++++++++++++++++++++++++++++++++------------- source/ublexec.h | 1 + 2 files changed, 62 insertions(+), 22 deletions(-) diff --git a/source/ublexec.cc b/source/ublexec.cc index f6c89cc..f373191 100644 --- a/source/ublexec.cc +++ b/source/ublexec.cc @@ -201,10 +201,68 @@ void MainWindow::event() { btnSynopsis->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::synopsis_show)); btnAbout->signal_activate().connect([&]() {aboutWindows->show();}); cmbUser->signal_changed().connect([&]() {denamic_cmd();changed_user();}); - rbSudo->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::denamic_cmd)); + rbSudo->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::sudo_nice)); txtCmd->signal_focus_out_event().connect(sigc::mem_fun(*this, &MainWindow::focus_out_txt_cmd)); txtCmd->signal_focus_in_event().connect(sigc::mem_fun(*this, &MainWindow::focus_in_txt_cmd)); txtCmd->signal_delete_text().connect(sigc::mem_fun(*this, &MainWindow::delete_cmd)); + rbSu->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::sudo_nice)); + rbPkexec->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::sudo_nice)); +} + +void MainWindow::sudo_nice(){ + if (geteuid() == 0 || cmbUser->get_active_text() == "root"){ + spinPriority->set_range(-20, 19); + spinPriority->set_increments(1.0, -1.0); + scalePriority->set_range(-20, 19); + scalePriority->set_value(0); + lblTimeEpriorityLow->set_text("19 (Низкий)"); + lblTime4EpriorityHigh->set_text("-20 (Высокий)"); + } + else if (rbSudo->get_active()){ + spinPriority->set_range(-20, 19); + spinPriority->set_increments(1.0, -1.0); + scalePriority->set_range(-20, 19); + scalePriority->set_value(0); + lblTimeEpriorityLow->set_text("19 (Низкий)"); + lblTime4EpriorityHigh->set_text("-20 (Высокий)"); + } + else if (rbSu->get_active()){ + spinPriority->set_range(0, 19); + spinPriority->set_increments(1.0, -1.0); + scalePriority->set_range(0, 19); + scalePriority->set_value(0); + lblTimeEpriorityLow->set_text("19 (Низкий)"); + lblTime4EpriorityHigh->set_text("0 (Высокий)"); + } + else if (rbPkexec->get_active()){ + spinPriority->set_range(0, 19); + spinPriority->set_increments(1.0, -1.0); + scalePriority->set_range(0, 19); + scalePriority->set_value(0); + lblTimeEpriorityLow->set_text("19 (Низкий)"); + lblTime4EpriorityHigh->set_text("0 (Высокий)"); + } + this->denamic_cmd(); +} + +void MainWindow::changed_user() { + Glib::ustring entry_user = cmbUser->get_active_text(); + if (geteuid() == 0 || entry_user == "root") { + spinPriority->set_range(-20, 19); + spinPriority->set_increments(1.0, -1.0); + scalePriority->set_range(-20, 19); + scalePriority->set_value(0); + lblTimeEpriorityLow->set_text("19 (Низкий)"); + lblTime4EpriorityHigh->set_text("-20 (Высокий)"); + } + else{ + spinPriority->set_range(0, 19); + spinPriority->set_increments(1.0, -1.0); + scalePriority->set_range(0, 19); + scalePriority->set_value(0); + lblTimeEpriorityLow->set_text("19 (Низкий)"); + lblTime4EpriorityHigh->set_text("0 (Высокий)"); + } } void MainWindow::delete_cmd(const int &x, const int &y) { @@ -597,26 +655,6 @@ void MainWindow::entry_app() { this->call_app(cmd); } -void MainWindow::changed_user() { - Glib::ustring entry_user = cmbUser->get_active_text(); - if (geteuid() == 0 || entry_user == "root") { - spinPriority->set_range(-20, 19); - spinPriority->set_increments(1.0, -1.0); - scalePriority->set_range(-20, 19); - scalePriority->set_value(0); - lblTimeEpriorityLow->set_text("19 (Низкий)"); - lblTime4EpriorityHigh->set_text("-20 (Высокий)"); - } - else{ - spinPriority->set_range(0, 19); - spinPriority->set_increments(1.0, -1.0); - scalePriority->set_range(0, 19); - scalePriority->set_value(0); - lblTimeEpriorityLow->set_text("19 (Низкий)"); - lblTime4EpriorityHigh->set_text("0 (Высокий)"); - } -} - void MainWindow::activ_or_block_other_user() { bool flag = chbAnotherUser->get_active(); cmbUser->set_active(0); @@ -668,7 +706,8 @@ void MainWindow::pars_dir_bin() { void MainWindow::is_user_wheel(){ string response = this->call("id -Gn"); if (response.find("wheel") == string::npos){ - rbSudo->set_sensitive(false); + flag_sudo = false; + rbSudo->set_sensitive(flag_sudo); } size_t user_index = response.find(" "); if (user_index!=string::npos){ diff --git a/source/ublexec.h b/source/ublexec.h index 9b2e3a9..93c41ce 100755 --- a/source/ublexec.h +++ b/source/ublexec.h @@ -87,6 +87,7 @@ public: void synopsis_show(); void denamic_cmd(); void is_user_wheel(); + void sudo_nice(); bool focus_out_txt_cmd(GdkEventFocus* event); bool focus_in_txt_cmd(GdkEventFocus* event); void unselect_icon(Gtk::IconView *icon_entry);