From 881f9f08ec19e2f4c10980be557ff1a53e3e168b Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 9 Mar 2023 14:15:06 +0600 Subject: [PATCH 1/2] =?UTF-8?q?=D0=A7=D0=B0=D1=81=D1=82=D0=B8=D1=87=D0=BD?= =?UTF-8?q?=D0=BE=20=D0=BA=D0=BE=D0=B4=20=D0=BF=D1=80=D0=B8=D0=B2=D0=B5?= =?UTF-8?q?=D0=B4=D1=91=D0=BD=20=D1=81=D1=82=D0=B0=D0=BD=D0=B4=D0=B0=D1=80?= =?UTF-8?q?=D1=82=D1=83=20=D0=A1=D1=82=D1=8D=D0=BD=D1=84=D0=BE=D1=80=D0=B4?= =?UTF-8?q?=D1=81=D0=BA=D0=BE=D0=B3=D0=BE=20=D1=83=D0=BD=D0=B8=D0=B2=D0=B5?= =?UTF-8?q?=D1=80=D1=81=D0=B8=D1=82=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/main.cc | 19 +-- source/ublexec.cc | 364 ++++++++++++++++++++++------------------------ source/ublexec.h | 264 +++++++++++++++++---------------- 3 files changed, 308 insertions(+), 339 deletions(-) diff --git a/source/main.cc b/source/main.cc index dea0329..50150ff 100755 --- a/source/main.cc +++ b/source/main.cc @@ -1,17 +1,10 @@ #include "ublexec.h" -int main(int argc, char** argv) -{ - +int main(int argc, char** argv) { string str_cmd_argv = ""; for (int i=1; irun(plug); return 0; } else { - MainWindow* wnd = nullptr; builder->get_widget_derived("window", wnd); auto r = app->run(*wnd); diff --git a/source/ublexec.cc b/source/ublexec.cc index 11fa404..27a0e53 100644 --- a/source/ublexec.cc +++ b/source/ublexec.cc @@ -1,28 +1,25 @@ #include "ublexec.h" using namespace std; -string path_app= "/usr/bin/"; -string path_glade= "/usr/share/ublexec/ui/ublexec.glade"; -string path_css = "/usr/share/ublexec/css/style.css"; -string app_name = "ublexec"; -int socket_ext_id_I=0; -int socket_trd_id_I=0; +const string path_app = "/usr/bin/"; +const string path_glade = "/usr/share/ublexec/ui/ublexec.glade"; +const string path_css = "/usr/share/ublexec/css/style.css"; +const string app_name = "ublexec"; +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} { Glib::OptionEntry socketIDArg; 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); @@ -42,7 +39,7 @@ MainWindow::MainWindow(Glib::RefPtr const& builder) { this->settings(); } -void MainWindow::get_builder(){ +void MainWindow::get_builder() { builder->get_widget("btnFilemaneg", btnFilemaneg); builder->get_widget("btnListApp", btnListApp); builder->get_widget("btnStart", btnStart); @@ -108,27 +105,27 @@ void MainWindow::get_builder(){ builder->get_widget("btnBoxAboutDialog", btnBoxAboutDialog); } -void MainWindow::set_icon_array(){ - array_icon[0]=this->iconGraphics; - array_icon[1]=this->iconTools; - array_icon[2]=this->iconInternet; - array_icon[3]=this->iconMultimedia; - array_icon[4]=this->iconSettings; - array_icon[5]=this->iconEducation; - array_icon[6]=this->iconOffice; - array_icon[7]=this->iconOther; - array_icon[8]=this->iconDevelopment; - array_icon[9]=this->iconSystem; +void MainWindow::set_icon_array() { + array_icon[0] = this->iconGraphics; + array_icon[1] = this->iconTools; + array_icon[2] = this->iconInternet; + array_icon[3] = this->iconMultimedia; + array_icon[4] = this->iconSettings; + array_icon[5] = this->iconEducation; + array_icon[6] = this->iconOffice; + array_icon[7] = this->iconOther; + array_icon[8] = this->iconDevelopment; + array_icon[9] = this->iconSystem; } -void MainWindow::template_apps_obj(Gtk::IconView *icon, Glib::RefPtr >k_list_app){ +void MainWindow::template_apps_obj(Gtk::IconView *icon, Glib::RefPtr >k_list_app) { gtk_list_app = Gtk::ListStore::create(m_Columns); gtk_list_app->set_sort_column(m_Columns.m_col_description, Gtk::SORT_ASCENDING); icon->set_model(gtk_list_app); icon->set_text_column(m_Columns.m_col_description); } -void MainWindow::add_CSS(){ +void MainWindow::add_CSS() { Glib::RefPtr cssProvider = Gtk::CssProvider::create(); cssProvider->load_from_path(path_css); Glib::RefPtr styleContext = Gtk::StyleContext::create(); @@ -140,7 +137,7 @@ void MainWindow::add_CSS(){ context_lbl_head->add_class("textHead"); } -void MainWindow::localization(){ +void MainWindow::localization() { aboutWindows->set_website(_("https://wiki.ublinux.com")); btnSynopsis->set_label(_("Help")); btnAbout->set_label(_("About the program")); @@ -175,7 +172,7 @@ void MainWindow::localization(){ lblSystem->set_text(_("System")); } -void MainWindow::event(){ +void MainWindow::event() { btnFilemaneg->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::open_filemaneg)); btnListApp->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::open_list_app)); btnStart->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::entry_app)); @@ -201,15 +198,16 @@ void MainWindow::event(){ iconDevelopment->signal_selection_changed().connect(sigc::mem_fun(*this,&MainWindow::select_Development)); iconSystem->signal_selection_changed().connect(sigc::mem_fun(*this,&MainWindow::select_System)); 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();}); + 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)); 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)); } -void MainWindow::delete_cmd(const int &x,const int &y){ - if (y>1){ + +void MainWindow::delete_cmd(const int &x, const int &y) { + if (y > 1) { chbTerminal->set_active(false); chbAnotherUser->set_active(false); cbxExecuteEpriority->set_active(false); @@ -217,15 +215,12 @@ void MainWindow::delete_cmd(const int &x,const int &y){ } } -bool MainWindow::focus_in_txt_cmd(GdkEventFocus* event){ - if (user_cmd.length() != 0){ - //user_cmd_old = user_cmd;gi +bool MainWindow::focus_in_txt_cmd(GdkEventFocus* event) { + if (user_cmd.length() != 0) { } - else if (name_app.length() != 0){ - //name_app_old = name_app; + else if (name_app.length() != 0) { } - else if (path_file.length() != 0){ - //path_file_old = path_file; + else if (path_file.length() != 0) { } else{ user_cmd = txtCmd->get_text(); @@ -234,12 +229,11 @@ bool MainWindow::focus_in_txt_cmd(GdkEventFocus* event){ return true; } - -void MainWindow::synopsis_show(){ +void MainWindow::synopsis_show() { system("xdg-open https://wiki.ublinux.ru/ru/home &"); } -void MainWindow::icon_clear(){ +void MainWindow::icon_clear() { list_Graphics->clear(); list_Tools->clear(); list_Internet->clear(); @@ -252,45 +246,44 @@ void MainWindow::icon_clear(){ list_System->clear(); } -void MainWindow::ok_close_entry_app(){ +void MainWindow::ok_close_entry_app() { this->icon_clear(); dialogStartMenu->hide(); } -void MainWindow::select_Graphics(){ - this->tempate_icon_select(this->iconGraphics,list_Graphics); +void MainWindow::select_Graphics() { + this->tempate_icon_select(this->iconGraphics, list_Graphics); } -void MainWindow::select_Tools(){ - this->tempate_icon_select(this->iconTools,list_Tools); +void MainWindow::select_Tools() { + this->tempate_icon_select(this->iconTools, list_Tools); } -void MainWindow::select_Internet(){ - this->tempate_icon_select(this->iconInternet,list_Internet); +void MainWindow::select_Internet() { + this->tempate_icon_select(this->iconInternet, list_Internet); } -void MainWindow::select_Multimedia(){ - this->tempate_icon_select(this->iconMultimedia,list_Multimedia); +void MainWindow::select_Multimedia() { + this->tempate_icon_select(this->iconMultimedia, list_Multimedia); } -void MainWindow::select_Settings(){ - this->tempate_icon_select(this->iconSettings,list_Settings); +void MainWindow::select_Settings() { + this->tempate_icon_select(this->iconSettings, list_Settings); } -void MainWindow::select_Education(){ - this->tempate_icon_select(this->iconEducation,list_Education); +void MainWindow::select_Education() { + this->tempate_icon_select(this->iconEducation, list_Education); } -void MainWindow::select_Office(){ - this->tempate_icon_select(this->iconOffice,list_Office); +void MainWindow::select_Office() { + this->tempate_icon_select(this->iconOffice, list_Office); } -void MainWindow::select_Other(){ - this->tempate_icon_select(this->iconOther,list_Other); +void MainWindow::select_Other() { + this->tempate_icon_select(this->iconOther, list_Other); } -void MainWindow::select_Development(){ - this->tempate_icon_select(this->iconDevelopment,list_Development); +void MainWindow::select_Development() { + this->tempate_icon_select(this->iconDevelopment, list_Development); } -void MainWindow::select_System(){ - this->tempate_icon_select(this->iconSystem,list_System); +void MainWindow::select_System() { + this->tempate_icon_select(this->iconSystem, list_System); } -void MainWindow::tempate_icon_select(Gtk::IconView *icon, Glib::RefPtr >k_list){ +void MainWindow::tempate_icon_select(Gtk::IconView *icon, Glib::RefPtr >k_list) { auto selected = (*icon).get_selected_items(); - if(!selected.empty()) - { + if(!selected.empty()) { this->set_icon_array(); this->unselect_icon(icon); const Gtk::TreeModel::Path& path = *selected.begin(); @@ -304,10 +297,10 @@ void MainWindow::tempate_icon_select(Gtk::IconView *icon, Glib::RefPtrset_text(app_name_exec); name_app = txtCmd->get_text(); int len_name_app = name_app.length(); - string array_del[] = {"%f","%F","%d","%D","%n","%N","%U"}; - for (auto &del_sim: array_del){ + string array_del[] = {"%f", "%F", "%d", "%D", "%n", "%N", "%U"}; + for (auto &del_sim: array_del) { str_remove(name_app, del_sim); - if (name_app.length()!=len_name_app){ + if (name_app.length() != len_name_app) { txtCmd->set_text(name_app); break; } @@ -315,24 +308,24 @@ void MainWindow::tempate_icon_select(Gtk::IconView *icon, Glib::RefPtrarray_icon[index]; - if (icon_entry!=icon){ + if (icon_entry != icon) { icon->unselect_all(); } } } -void MainWindow::settings(){ +void MainWindow::settings() { this->pars_apps(); this->get_builder(); this->event(); this->localization(); this->add_CSS(); - spinPriority->set_range(0,19); - spinPriority->set_increments(1.0,-1.0); - scalePriority->set_range(0,19); + 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 (Высокий)"); @@ -350,22 +343,21 @@ void MainWindow::settings(){ btnBoxAboutDialog->set_visible(false); Gtk::Widget *boxAbout; builder->get_widget("boxAbout",boxAbout); + ubl_make_plugs(boxAbout, boxAbout,0 , socket_trd_id_I); +} - ubl_make_plugs(boxAbout,boxAbout, 0, socket_trd_id_I); - -} -void MainWindow::close_entry_app(){ +void MainWindow::close_entry_app() { this->icon_clear(); dialogStartMenu->hide(); } -void MainWindow::start_menu_entry_app(){} +void MainWindow::start_menu_entry_app() {} -void MainWindow::message_gui_close(){ +void MainWindow::message_gui_close() { messageError->hide(); } -void MainWindow::activ_or_block_execute_epriority(){ +void MainWindow::activ_or_block_execute_epriority() { bool flag = cbxExecuteEpriority->get_active(); scalePriority->set_sensitive(flag); spinPriority->set_sensitive(flag); @@ -375,19 +367,19 @@ void MainWindow::activ_or_block_execute_epriority(){ this->denamic_cmd(); } -void MainWindow::open_filemaneg(){ +void MainWindow::open_filemaneg() { wndChooseFileWallpaper->show(); } -void MainWindow::close_filemaneg(){ +void MainWindow::close_filemaneg() { wndChooseFileWallpaper->hide(); } -void MainWindow::get_path_filemaneg(){ +void MainWindow::get_path_filemaneg() { name_app = ""; user_cmd = ""; path_file = wndChooseFileWallpaper->get_filename(); - if (path_file.length() == 0){} + if (path_file.length() == 0) {} else{ txtCmd->set_text(path_file); this->close_filemaneg(); @@ -396,7 +388,7 @@ void MainWindow::get_path_filemaneg(){ this->denamic_cmd(); } -void MainWindow::tempalte_row(string Name, string Exec, string path , Glib::RefPtr &dtk_list){ +void MainWindow::tempalte_row(string Name, string Exec, string path , Glib::RefPtr &dtk_list) { Gtk::TreeModel::Row row = *(dtk_list->append()); row[m_Columns.m_col_filename] = path; row[m_Columns.m_col_description] = Name; @@ -406,7 +398,7 @@ void MainWindow::tempalte_row(string Name, string Exec, string path , Glib::Ref row[m_Columns.float_w_align] = 0.5; } -void MainWindow::open_list_app(){ +void MainWindow::open_list_app() { this->template_apps_obj(iconGraphics, list_Graphics); this->template_apps_obj(iconTools, list_Tools); this->template_apps_obj(iconInternet, list_Internet); @@ -418,37 +410,37 @@ void MainWindow::open_list_app(){ this->template_apps_obj(iconDevelopment, list_Development); this->template_apps_obj(iconSystem, list_System); string path = ""; - for ( const auto &st_app : list_app){ - for ( const auto &str_categor : st_app.Categories){ + for ( const auto &st_app: list_app) { + for ( const auto &str_categor: st_app.Categories) { path = st_app.Icon; - if (str_categor=="Graphics"){ + if (str_categor == "Graphics") { this->tempalte_row(st_app.Name,st_app.Exec, path, list_Graphics); } - else if (str_categor=="Utility"){ + else if (str_categor == "Utility") { this->tempalte_row(st_app.Name,st_app.Exec, path, list_Tools); } - else if (str_categor=="Network"){ - this->tempalte_row(st_app.Name,st_app.Exec, path,list_Internet); + else if (str_categor == "Network") { + this->tempalte_row(st_app.Name,st_app.Exec, path, list_Internet); } - else if (str_categor== "AudioVideo"){ + else if (str_categor == "AudioVideo") { this->tempalte_row(st_app.Name,st_app.Exec, path, list_Multimedia); } - else if (str_categor=="Settings"){ + else if (str_categor == "Settings") { this->tempalte_row(st_app.Name,st_app.Exec, path, list_Settings); } - else if (str_categor=="Education"){ + else if (str_categor == "Education") { this->tempalte_row(st_app.Name,st_app.Exec, path, list_Education); } - else if (str_categor=="Office"){ + else if (str_categor == "Office") { this->tempalte_row(st_app.Name,st_app.Exec, path, list_Office); } - else if (str_categor=="Other"){ + else if (str_categor == "Other") { this->tempalte_row(st_app.Name,st_app.Exec, path, list_Other); } - else if (str_categor=="Development"){ + else if (str_categor == "Development") { this->tempalte_row(st_app.Name,st_app.Exec, path, list_Development); } - else if (str_categor=="System"){ + else if (str_categor == "System") { this->tempalte_row(st_app.Name,st_app.Exec, path, list_System); } } @@ -457,96 +449,93 @@ void MainWindow::open_list_app(){ } -string MainWindow::start_cmd(string user_cmd){ - string str_cmd_terminal=""; +string MainWindow::start_cmd(string user_cmd) { + string str_cmd_terminal = ""; string str_variants_root = ""; string str_nice_cmd = ""; - if (chbAnotherUser->get_active()){ - if (geteuid()!=0){ + if (chbAnotherUser->get_active()) { + if (geteuid() != 0) { //chbTerminal->set_active(true); } - if (rbPkexec->get_active()){ + if (rbPkexec->get_active()) { str_variants_root = " pkexec --user " + cmbUser->get_active_text(); - if (cbxExecuteEpriority->get_active()){ + if (cbxExecuteEpriority->get_active()) { str_variants_root += " nice -n " + to_string(spinPriority->get_value_as_int()); } str_variants_root += " env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; } - else if (rbSu->get_active()){ + else if (rbSu->get_active()) { chbTerminal->set_active(true); string str_user = cmbUser->get_active_text(); - if (str_user!="root"){ + if (str_user != "root") { str_variants_root = "su -l " + cmbUser->get_active_text(); } else{ str_variants_root = "su "; } - str_variants_root += + " -c \" DISPLAY=$DISPLAY "; - if (cbxExecuteEpriority->get_active()){ + if (cbxExecuteEpriority->get_active()) { str_variants_root += "nice -n " + to_string(spinPriority->get_value_as_int()) + " "; } } - else if (rbSudo->get_active()){ + else if (rbSudo->get_active()) { chbTerminal->set_active(true); - if (getlogin()==cmbUser->get_active_text()){ + if (getlogin()==cmbUser->get_active_text()) { str_variants_root="sudo "; } else{ str_variants_root="sudo -u " + cmbUser->get_active_text() + " "; } - if (cbxExecuteEpriority->get_active()){ + if (cbxExecuteEpriority->get_active()) { str_variants_root += " nice -n " + to_string(spinPriority->get_value_as_int()) + " "; } } } - if (cmbUser->get_active_text().length()!=0){ + if (cmbUser->get_active_text().length() != 0) { string user_cmd_X = "xhost +SI:localuser:"; user_cmd_X += cmbUser->get_active_text(); + user_cmd_X += " > /dev/null 2>&1"; system(user_cmd_X.c_str()); } - if ((cbxExecuteEpriority->get_active()) && (chbAnotherUser->get_active()==false)){ + if ((cbxExecuteEpriority->get_active()) && (chbAnotherUser->get_active() == false)) { str_nice_cmd = " nice -n " + to_string(spinPriority->get_value_as_int()) + " "; } - if (user_cmd.length()==0 && name_app.length()==0 && path_file.length()==0){ + if (user_cmd.length() == 0 && name_app.length() == 0 && path_file.length() == 0) { messageError->show(); return ""; } - - if (chbTerminal->get_active() == true){ + if (chbTerminal->get_active() == true) { str_cmd_terminal = "xterm -e "; } else{ str_cmd_terminal = ""; } - string cmd = ""; - if (path_file.length()>0){ + if (path_file.length() > 0) { cmd = "nohup " + str_nice_cmd + str_cmd_terminal + str_variants_root + " xdg-open '" + path_file + "' "; } - else if (name_app.length()>0){ + else if (name_app.length() > 0) { cmd = "nohup " + str_nice_cmd + str_cmd_terminal + str_variants_root + name_app; } - else if (user_cmd.length()>0){ + else if (user_cmd.length() > 0) { cmd = "nohup " + str_nice_cmd + str_cmd_terminal + str_variants_root + " " + user_cmd; } - if (cmd.find("-e su ")!=string::npos){ + if (cmd.find("-e su ") != string::npos) { cmd+=" \""; } cmd += " > /dev/null 2>&1"; - return cmd; } -void MainWindow::call_app(string &cmd){ - if (cmd.length() != 0){ - std::thread t([&](string cmd){system(cmd.c_str());}, cmd); +void MainWindow::call_app(string &cmd) { + if (cmd.length() != 0) { + std::thread t([&](string cmd) {system(cmd.c_str());}, cmd); t.detach(); } } -void MainWindow::denamic_cmd(){ - if (chbTerminal->get_active()==true || chbAnotherUser->get_active()==true || cbxExecuteEpriority->get_active()==true){ - if (txtCmd->get_text().length()==0){ +void MainWindow::denamic_cmd() { + if (chbTerminal->get_active() == true || chbAnotherUser->get_active() == true || cbxExecuteEpriority->get_active() == true) { + if (txtCmd->get_text().length() == 0) { chbTerminal->set_active(false); chbAnotherUser->set_active(false); cbxExecuteEpriority->set_active(false); @@ -561,94 +550,93 @@ void MainWindow::denamic_cmd(){ } } else{ - if (user_cmd.length() != 0){ + if (user_cmd.length() != 0) { txtCmd->set_text(this->start_cmd(user_cmd)); } - else if (path_file.length() != 0){ + else if (path_file.length() != 0) { txtCmd->set_text(this->start_cmd(user_cmd)); } - else if (name_app.length() != 0){ + else if (name_app.length() != 0) { txtCmd->set_text(this->start_cmd(user_cmd)); } } } -bool MainWindow::focus_out_txt_cmd(GdkEventFocus* event){ - if (cmd_old!=txtCmd->get_text()){ +bool MainWindow::focus_out_txt_cmd(GdkEventFocus* event) { + if (cmd_old != txtCmd->get_text()) { user_cmd = txtCmd->get_text(); } return true; } -void MainWindow::entry_app(){ +void MainWindow::entry_app() { this->denamic_cmd(); - if (name_app.length()==0 && path_file.length()==0){ - + if (name_app.length() == 0 && path_file.length() == 0) { } string cmd = txtCmd->get_text(); this->call_app(cmd); } -void MainWindow::changed_user(){ +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); + 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); + 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(){ +void MainWindow::activ_or_block_other_user() { bool flag = chbAnotherUser->get_active(); cmbUser->set_active(0); cmbUser->set_sensitive(flag); lblInfoUserName->set_sensitive(flag); - if (flag_pkexec == true){ + if (flag_pkexec == true) { rbPkexec->set_sensitive(flag); } - if (flag_su == true){ + if (flag_su == true) { rbSu->set_sensitive(flag); } - if (flag_sudo == true){ + if (flag_sudo == true) { rbSudo->set_sensitive(flag); } this->denamic_cmd(); } -void MainWindow::change_scale_priority(){ +void MainWindow::change_scale_priority() { scalePriority->set_value(spinPriority->get_value_as_int()); this->denamic_cmd(); } -void MainWindow::change_spin_priority(){ +void MainWindow::change_spin_priority() { spinPriority->set_value(scalePriority->get_value()); this->denamic_cmd(); } -void MainWindow::pars_dir_bin(){ +void MainWindow::pars_dir_bin() { namespace fs = std::filesystem; std::string path = "/bin"; string file_name = ""; - for (const auto & entry : fs::directory_iterator(path)){ + for (const auto & entry: fs::directory_iterator(path)) { file_name = entry.path().filename().string(); - if (file_name=="su"){ + if (file_name == "su") { flag_su = true; } - else if (file_name=="sudo"){ + else if (file_name == "sudo") { flag_sudo = true; } - else if (file_name=="pkexec"){ + else if (file_name == "pkexec") { flag_pkexec = true; } } @@ -657,7 +645,7 @@ void MainWindow::pars_dir_bin(){ rbSudo->set_sensitive(flag_sudo); } -void MainWindow::pars_users(){ +void MainWindow::pars_users() { while (true) { errno = 0; passwd* entry = getpwent(); @@ -667,63 +655,62 @@ void MainWindow::pars_users(){ } break; } - - if (entry->pw_uid >= 1000 && entry->pw_uid!=65534){ + if (entry->pw_uid >= 1000 && entry->pw_uid != 65534) { cmbUser->append(entry->pw_name); - } + } } cmbUser->append("root"); endpwent(); } vector MainWindow::split(const std::string &s, char delim) { - std::stringstream ss(s); - std::string item; - std::vector elems; - while (std::getline(ss, item, delim)) { - elems.push_back(item); - } - return elems; + std::stringstream ss(s); + std::string item; + std::vector elems; + while (std::getline(ss, item, delim)) { + elems.push_back(item); + } + return elems; } -void MainWindow::str_remove(std::string& source, std::string & to_remove){ +void MainWindow::str_remove(std::string& source, std::string & to_remove) { string::size_type n = to_remove.length(); for (string::size_type i = source.find(to_remove); - i != string::npos; - i = source.find(to_remove)) - source.erase(i, n); + i != string::npos; + i = source.find(to_remove)) + source.erase(i, n); } -void MainWindow::pars_apps(){ - if (list_app.size()!=0){return;} +void MainWindow::pars_apps() { + if (list_app.size() != 0 ) {return;} namespace fs = std::filesystem; struct struct_App App; string file_name = ""; string str_Categories; string path = "/usr/share/applications/"; - for (const auto & entry : fs::directory_iterator(path)){ + for (const auto & entry : fs::directory_iterator(path)) { file_name = entry.path().filename().string(); path = "/usr/share/applications/"+file_name; - if (file_name.find(".desktop")!=std::string::npos){ + if (file_name.find(".desktop") != std::string::npos) { GKeyFile *gfile=g_key_file_new(); - g_key_file_load_from_file(gfile,path.c_str(),G_KEY_FILE_KEEP_TRANSLATIONS,NULL); - char *Type=g_key_file_get_string(gfile,"Desktop Entry", "Type",NULL); - char *Name=g_key_file_get_locale_string(gfile,"Desktop Entry","Name",setlocale(LC_ALL,NULL),NULL); - char *Exec=g_key_file_get_string(gfile,"Desktop Entry", "Exec",NULL); - char *Categories=g_key_file_get_locale_string(gfile,"Desktop Entry", "Categories",setlocale(LC_ALL,""),NULL); - char *Icon=g_key_file_get_string(gfile,"Desktop Entry", "Icon",NULL); - char *Mime=g_key_file_get_string(gfile,"Desktop Entry", "MimeType",NULL); - if (Type==NULL) continue; - if (Name==NULL) continue; - if (Exec==NULL) continue; - if (Categories==NULL) continue; - if (Icon==NULL) continue; + g_key_file_load_from_file(gfile, path.c_str(), G_KEY_FILE_KEEP_TRANSLATIONS, NULL); + char *Type = g_key_file_get_string(gfile, "Desktop Entry", "Type", NULL); + char *Name = g_key_file_get_locale_string(gfile, "Desktop Entry", "Name", setlocale(LC_ALL, NULL), NULL); + char *Exec = g_key_file_get_string(gfile, "Desktop Entry", "Exec", NULL); + char *Categories = g_key_file_get_locale_string(gfile, "Desktop Entry", "Categories", setlocale(LC_ALL, ""), NULL); + char *Icon = g_key_file_get_string(gfile, "Desktop Entry", "Icon", NULL); + char *Mime = g_key_file_get_string(gfile, "Desktop Entry", "MimeType", NULL); + if (Type == NULL) continue; + if (Name == NULL) continue; + if (Exec == NULL) continue; + if (Categories == NULL) continue; + if (Icon == NULL) continue; str_Categories = Categories; App.Name = Name; App.Type = Type; App.Exec = Exec; App.Icon = Icon; - if (Mime!=NULL){ + if (Mime != NULL) { App.MimeType = Mime; } else{ @@ -731,7 +718,6 @@ void MainWindow::pars_apps(){ } App.Name_desktop = file_name; App.Categories = split(str_Categories, ';'); - } list_app.push_back(App); } diff --git a/source/ublexec.h b/source/ublexec.h index 5f34098..cc1d545 100644 --- a/source/ublexec.h +++ b/source/ublexec.h @@ -19,10 +19,10 @@ using namespace std; -extern string path_app; -extern string app_name; -extern string path_glade; -extern string path_css; +extern const string path_app; +extern const string app_name; +extern const string path_glade; +extern const string path_css; extern int socket_ext_id_I; extern int socket_trd_id_I; void me_thread(string cmd); @@ -91,137 +91,133 @@ public: void unselect_icon(Gtk::IconView *icon_entry); void str_remove(std::string& source, std::string & to_remove); vector split(const std::string &s, char delim); - public: - class ModelColumns : public Gtk::TreeModel::ColumnRecord - { - public: - ModelColumns() - { - add(m_col_filename); - add(m_col_description); - add(m_col_pixbuf); - add(app_name_exec); - add(float_h_align); - add(float_w_align); - add(icon_name); - - } - Gtk::TreeModelColumn m_col_filename; - Gtk::TreeModelColumn icon_name; - Gtk::TreeModelColumn m_col_description; - Gtk::TreeModelColumn app_name_exec; - Gtk::TreeModelColumn > m_col_pixbuf; - Gtk::TreeModelColumn float_h_align; - Gtk::TreeModelColumn float_w_align; - }; - ModelColumns m_Columns; - public: - Glib::RefPtr builder; - Gtk::Button *btnFilemaneg; - Gtk::Button *btnListApp; - Gtk::Button *btnStart; - Gtk::CheckButton *chbTerminal; - Gtk::CheckButton *chbAnotherUser; - Gtk::CheckButton *cbxExecuteEpriority; - Gtk::ComboBoxText *cmbUser; - Gtk::SpinButton *spinPriority; - Gtk::Scale *scalePriority; - Gtk::RadioButton *rbPkexec; - Gtk::RadioButton *rbSu; - Gtk::RadioButton *rbSudo; - Gtk::Entry *txtCmd; - Gtk::FileChooserDialog *wndChooseFileWallpaper; - Gtk::Button *btnFilemangerExit; - Gtk::Button *btnFilemangerOk; - Gtk::Label *lblTimeEpriority; - Gtk::Label *lblTimeEpriorityLow; - Gtk::Label *lblTime4EpriorityHigh; - Gtk::Label *lblUserName; - Gtk::MessageDialog *messageError; - Gtk::Button *btnMessageErrorOk; - Gtk::Label *lblMessageError; - Gtk::Button *btnStartMenuOK; - Gtk::Button *btnStartMenuExit; - Gtk::Window *dialogStartMenu; - Gtk::Box *boxColor; - Gtk::Label *lblInfoHead; - Gtk::Label *lblinfoCmd; - Gtk::Label *lblInfoTime; - Gtk::Label *labInfoExecutTerm; - Gtk::Label *lblInfoUser; - Gtk::Label *lblInfoUserOther; - Gtk::Label *lblInfoUserName; - Gtk::Label *lblInfoNooPriority; - Gtk::Label *lblInfoExec; - Gtk::Label *lblInfoPriority; - - Gtk::Label *lblGraphics; - Gtk::Label *lblTools; - Gtk::Label *lblInternet; - Gtk::Label *lblMultimedia; - Gtk::Label *lblSettings; - Gtk::Label *lblEducation; - Gtk::Label *lblOffice; - Gtk::Label *lblOther; - Gtk::Label *lblDevelopment; - Gtk::Label *lblSystem; - Gtk::Label *lblHeaderName; - - Gtk::IconView *iconGraphics; - Gtk::IconView *iconTools; - Gtk::IconView *iconInternet; - Gtk::IconView *iconMultimedia; - Gtk::IconView *iconSettings; - Gtk::IconView *iconEducation; - Gtk::IconView *iconOffice; - Gtk::IconView *iconOther; - Gtk::IconView *iconDevelopment; - Gtk::IconView *iconSystem; - Gtk::IconView *iconEntry; - Gtk::MenuItem *btnAbout; - Gtk::MenuItem *btnSynopsis; - Gtk::AboutDialog *aboutWindows; - Gtk::MenuButton *btnSettings; - Gtk::ButtonBox *btnBoxAboutDialog; - - Glib::RefPtr list_Graphics; - Glib::RefPtr list_Tools; - Glib::RefPtr list_Internet; - Glib::RefPtr list_Multimedia; - Glib::RefPtr list_Settings; - Glib::RefPtr list_Education; - Glib::RefPtr list_Office; - Glib::RefPtr list_Other; - Glib::RefPtr list_Development; - Glib::RefPtr list_System; public: - string version_application = "1.0"; - string cmd_old = ""; - string user_cmd=""; - string user_cmd_old=""; - string name_app_old=""; - string path_file_old=""; - string execute_cmd = ""; - string path_file = ""; - string name_app = ""; - bool flag_pkexec = false; - bool flag_su = false; - bool flag_sudo = false; - string path_file_name; - struct struct_App{ - string Name_desktop; - string Name; - string Exec; - string Icon; - string MimeType; - string Type; - vector Categories;}; - list list_app; - set set_categories; - int index_exec_gui_apps = 0; - Gtk::IconView* array_icon[10]; - - + class ModelColumns : public Gtk::TreeModel::ColumnRecord { + public: + ModelColumns() + { + add(m_col_filename); + add(m_col_description); + add(m_col_pixbuf); + add(app_name_exec); + add(float_h_align); + add(float_w_align); + add(icon_name); + + } + Gtk::TreeModelColumn m_col_filename; + Gtk::TreeModelColumn icon_name; + Gtk::TreeModelColumn m_col_description; + Gtk::TreeModelColumn app_name_exec; + Gtk::TreeModelColumn > m_col_pixbuf; + Gtk::TreeModelColumn float_h_align; + Gtk::TreeModelColumn float_w_align; + }; + ModelColumns m_Columns; + public: + Glib::RefPtr builder; + Gtk::Button *btnFilemaneg; + Gtk::Button *btnListApp; + Gtk::Button *btnStart; + Gtk::CheckButton *chbTerminal; + Gtk::CheckButton *chbAnotherUser; + Gtk::CheckButton *cbxExecuteEpriority; + Gtk::ComboBoxText *cmbUser; + Gtk::SpinButton *spinPriority; + Gtk::Scale *scalePriority; + Gtk::RadioButton *rbPkexec; + Gtk::RadioButton *rbSu; + Gtk::RadioButton *rbSudo; + Gtk::Entry *txtCmd; + Gtk::FileChooserDialog *wndChooseFileWallpaper; + Gtk::Button *btnFilemangerExit; + Gtk::Button *btnFilemangerOk; + Gtk::Label *lblTimeEpriority; + Gtk::Label *lblTimeEpriorityLow; + Gtk::Label *lblTime4EpriorityHigh; + Gtk::Label *lblUserName; + Gtk::MessageDialog *messageError; + Gtk::Button *btnMessageErrorOk; + Gtk::Label *lblMessageError; + Gtk::Button *btnStartMenuOK; + Gtk::Button *btnStartMenuExit; + Gtk::Window *dialogStartMenu; + Gtk::Box *boxColor; + Gtk::Label *lblInfoHead; + Gtk::Label *lblinfoCmd; + Gtk::Label *lblInfoTime; + Gtk::Label *labInfoExecutTerm; + Gtk::Label *lblInfoUser; + Gtk::Label *lblInfoUserOther; + Gtk::Label *lblInfoUserName; + Gtk::Label *lblInfoNooPriority; + Gtk::Label *lblInfoExec; + Gtk::Label *lblInfoPriority; + Gtk::Label *lblGraphics; + Gtk::Label *lblTools; + Gtk::Label *lblInternet; + Gtk::Label *lblMultimedia; + Gtk::Label *lblSettings; + Gtk::Label *lblEducation; + Gtk::Label *lblOffice; + Gtk::Label *lblOther; + Gtk::Label *lblDevelopment; + Gtk::Label *lblSystem; + Gtk::Label *lblHeaderName; + Gtk::IconView *iconGraphics; + Gtk::IconView *iconTools; + Gtk::IconView *iconInternet; + Gtk::IconView *iconMultimedia; + Gtk::IconView *iconSettings; + Gtk::IconView *iconEducation; + Gtk::IconView *iconOffice; + Gtk::IconView *iconOther; + Gtk::IconView *iconDevelopment; + Gtk::IconView *iconSystem; + Gtk::IconView *iconEntry; + Gtk::MenuItem *btnAbout; + Gtk::MenuItem *btnSynopsis; + Gtk::AboutDialog *aboutWindows; + Gtk::MenuButton *btnSettings; + Gtk::ButtonBox *btnBoxAboutDialog; + Glib::RefPtr list_Graphics; + Glib::RefPtr list_Tools; + Glib::RefPtr list_Internet; + Glib::RefPtr list_Multimedia; + Glib::RefPtr list_Settings; + Glib::RefPtr list_Education; + Glib::RefPtr list_Office; + Glib::RefPtr list_Other; + Glib::RefPtr list_Development; + Glib::RefPtr list_System; + public: + string version_application = "1.0"; + string cmd_old = ""; + string user_cmd = ""; + string user_cmd_old = ""; + string name_app_old = ""; + string path_file_old = ""; + string execute_cmd = ""; + string path_file = ""; + string name_app = ""; + bool flag_pkexec = false; + bool flag_su = false; + bool flag_sudo = false; + string path_file_name; + struct struct_App { + string Name_desktop; + string Name; + string Exec; + string Icon; + string MimeType; + string Type; + vector Categories; + }; + list list_app; + set set_categories; + int index_exec_gui_apps = 0; + Gtk::IconView* array_icon[10]; + }; class SettingsPlug : public Gtk::Plug{ -- 2.35.1 From b16a9777b976b945edae7b9cc7cd565f98ce510d Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 9 Mar 2023 17:14:31 +0600 Subject: [PATCH 2/2] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20Plug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ublexec.cc | 6 +++--- source/ublexec.h | 1 + ublexec.desktop | 1 + ublexec.glade | 12 ++++++------ 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/source/ublexec.cc b/source/ublexec.cc index 27a0e53..eb1a5a0 100644 --- a/source/ublexec.cc +++ b/source/ublexec.cc @@ -103,6 +103,7 @@ void MainWindow::get_builder() { builder->get_widget("aboutWindows", aboutWindows); builder->get_widget("btnSettings", btnSettings); builder->get_widget("btnBoxAboutDialog", btnBoxAboutDialog); + builder->get_widget("boxAbout",boxAbout); } void MainWindow::set_icon_array() { @@ -341,9 +342,8 @@ void MainWindow::settings() { rbSu->set_sensitive(false); rbSudo->set_sensitive(false); btnBoxAboutDialog->set_visible(false); - Gtk::Widget *boxAbout; - builder->get_widget("boxAbout",boxAbout); - ubl_make_plugs(boxAbout, boxAbout,0 , socket_trd_id_I); + + ubl_make_plugs(boxAbout, boxAbout, socket_ext_id_I, 0); } void MainWindow::close_entry_app() { diff --git a/source/ublexec.h b/source/ublexec.h index cc1d545..8bd558c 100644 --- a/source/ublexec.h +++ b/source/ublexec.h @@ -190,6 +190,7 @@ public: Glib::RefPtr list_Other; Glib::RefPtr list_Development; Glib::RefPtr list_System; + Gtk::Widget *boxAbout; public: string version_application = "1.0"; string cmd_old = ""; diff --git a/ublexec.desktop b/ublexec.desktop index ef0cc9d..ce36841 100644 --- a/ublexec.desktop +++ b/ublexec.desktop @@ -11,4 +11,5 @@ Exec=ublexec Icon=ublexec Terminal=false X-XfcePluggable=true +X-UBLPluggable=true Categories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings;X-UBL-SettingsManager;X-UBL-SystemSettings; \ No newline at end of file diff --git a/ublexec.glade b/ublexec.glade index c432490..c247cbf 100644 --- a/ublexec.glade +++ b/ublexec.glade @@ -1290,7 +1290,7 @@ specified priority - True + False True 1 @@ -1487,7 +1487,7 @@ specified priority - True + False True 2 @@ -1720,7 +1720,7 @@ specified priority - True + False True 3 @@ -1748,14 +1748,14 @@ specified priority - True + False True 0 - True + False True 2 @@ -1763,7 +1763,7 @@ specified priority - + True False True -- 2.35.1