|
Before Width: | Height: | Size: 212 KiB After Width: | Height: | Size: 212 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 64 KiB |
@ -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<Gtk::Builder> 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);
|
|||||||
@ -106,29 +103,31 @@ void MainWindow::get_builder(){
|
|||||||
builder->get_widget("aboutWindows", aboutWindows);
|
|||||||
builder->get_widget("btnSettings", btnSettings);
|
|||||||
builder->get_widget("btnBoxAboutDialog", btnBoxAboutDialog);
|
|||||||
builder->get_widget("boxAbout", boxAbout);
|
|||||||
builder->get_widget("cmbTerminal", cmbTerminal);
|
|||||||
}
|
|||||||
|
|||||||
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<Gtk::ListStore> >k_list_app){
|
|||||||
void MainWindow::template_apps_obj(Gtk::IconView *icon, Glib::RefPtr<Gtk::ListStore> >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<Gtk::CssProvider> cssProvider = Gtk::CssProvider::create();
|
|||||||
cssProvider->load_from_path(path_css);
|
|||||||
Glib::RefPtr<Gtk::StyleContext> styleContext = Gtk::StyleContext::create();
|
|||||||
@ -140,10 +139,15 @@ void MainWindow::add_CSS(){
|
|||||||
context_lbl_head->add_class("textHead");
|
|||||||
}
|
|||||||
|
|||||||
void MainWindow::localization(){
|
|||||||
void MainWindow::localization() {
|
|||||||
time_t now = time(0);
|
|||||||
tm *ltm = localtime(&now);
|
|||||||
unsigned int year= 1900+ ltm->tm_year;
|
|||||||
string str_authors = string(_("Copyright © UBSoft LLC, 2022 - ")) + to_string(year);
|
|||||||
aboutWindows->set_copyright(str_authors);
|
|||||||
aboutWindows->set_website(_("https://wiki.ublinux.com"));
|
|||||||
btnSynopsis->set_label(_("Help"));
|
|||||||
btnAbout->set_label(_("About the program"));
|
|||||||
btnAbout->set_label(_("About"));
|
|||||||
aboutWindows->set_comments(_("ublexec"));
|
|||||||
aboutWindows->set_website_label(_("Project Home Page"));
|
|||||||
aboutWindows->set_version(_(version_application.c_str()));
|
|||||||
@ -154,14 +158,14 @@ void MainWindow::localization(){
|
|||||||
dialogStartMenu->set_title(_("Selecting Programs"));
|
|||||||
lblInfoHead->set_text(_("Running applications as a user with a\nspecified priority"));
|
|||||||
lblinfoCmd->set_text(_("Command Line"));
|
|||||||
lblInfoTime->set_text(_("Team"));
|
|||||||
lblInfoTime->set_text(_("Team:"));
|
|||||||
labInfoExecutTerm->set_text(_("Run in the terminal emulator"));
|
|||||||
lblInfoUser->set_text(_("User"));
|
|||||||
lblInfoUserOther->set_text(_("Run as another user"));
|
|||||||
lblInfoUserName->set_text(_("User Name"));
|
|||||||
lblInfoUserOther->set_text(_("Run as another user:"));
|
|||||||
lblInfoUserName->set_text(_("User Name:"));
|
|||||||
lblInfoNooPriority->set_text(_("Priority"));
|
|||||||
lblInfoExec->set_text(_("Change startup priority"));
|
|||||||
lblInfoPriority->set_text(_("Priority"));
|
|||||||
lblInfoPriority->set_text(_("Priority:"));
|
|||||||
lblMessageError->set_text(_("Select an executable file or program"));
|
|||||||
lblGraphics->set_text(_("Graphics"));
|
|||||||
lblTools->set_text(_("Tools"));
|
|||||||
@ -173,13 +177,14 @@ void MainWindow::localization(){
|
|||||||
lblOther->set_text(_("Other"));
|
|||||||
lblDevelopment->set_text(_("Development"));
|
|||||||
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));
|
|||||||
chbTerminal->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::denamic_cmd));
|
|||||||
chbTerminal->signal_toggled().connect([&]() {cmbTerminal->set_sensitive(chbTerminal->get_active());this->denamic_cmd();});
|
|||||||
chbAnotherUser->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::activ_or_block_other_user));
|
|||||||
spinPriority->signal_value_changed().connect(sigc::mem_fun(*this, &MainWindow::change_scale_priority));
|
|||||||
scalePriority->signal_value_changed().connect(sigc::mem_fun(*this, &MainWindow::change_spin_priority));
|
|||||||
@ -201,15 +206,78 @@ 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();});
|
|||||||
rbSudo->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::denamic_cmd));
|
|||||||
btnAbout->signal_activate().connect([&]() {aboutWindows->show();});
|
|||||||
cmbUser->signal_changed().connect([&]() {changed_user();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(){
|
|||||||
string response = this->call("id -Gn");
|
|||||||
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 (Low)"));
|
|||||||
lblTime4EpriorityHigh->set_text(_("-20 (High)"));
|
|||||||
}
|
|||||||
else if (rbSudo->get_active() && response.find("wheel") != string::npos){
|
|||||||
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 (Low)"));
|
|||||||
lblTime4EpriorityHigh->set_text(_("-20 (High)"));
|
|||||||
}
|
|||||||
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 (Low)"));
|
|||||||
lblTime4EpriorityHigh->set_text(_("0 (High)"));
|
|||||||
}
|
|||||||
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 (Low)"));
|
|||||||
lblTime4EpriorityHigh->set_text(_("0 (High)"));
|
|||||||
}
|
|||||||
this->denamic_cmd();
|
|||||||
}
|
|||||||
void MainWindow::delete_cmd(const int &x,const int &y){
|
|||||||
if (y>1){
|
|||||||
|
|||||||
void MainWindow::changed_user() {
|
|||||||
Glib::ustring entry_user = cmbUser->get_active_text();
|
|||||||
string response = this->call("id -Gn");
|
|||||||
bool flag_wheel_sudo = (rbSudo->get_active()==true && response.find("wheel") != string::npos);
|
|||||||
if (geteuid() == 0 || entry_user == "root" || flag_wheel_sudo==true) {
|
|||||||
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 (Low)"));
|
|||||||
lblTime4EpriorityHigh->set_text(_("-20 (High)"));
|
|||||||
}
|
|||||||
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 (Low)"));
|
|||||||
lblTime4EpriorityHigh->set_text(_("0 (High)"));
|
|||||||
}
|
|||||||
}
|
|||||||
|
|||||||
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 +285,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 +299,12 @@ bool MainWindow::focus_in_txt_cmd(GdkEventFocus* event){
|
|||||||
return true;
|
|||||||
}
|
|||||||
|
|||||||
|
|||||||
void MainWindow::synopsis_show(){
|
|||||||
system("xdg-open https://wiki.ublinux.ru/ru/home &");
|
|||||||
void MainWindow::synopsis_show() {
|
|||||||
string cmd = "xdg-open " + string(_("https://wiki.ublinux.com/ru/Программное_обеспечение/Программы_и_утилиты/Все/")) + app_name + " &";
|
|||||||
system(cmd.c_str());
|
|||||||
}
|
|||||||
|
|||||||
void MainWindow::icon_clear(){
|
|||||||
void MainWindow::icon_clear() {
|
|||||||
list_Graphics->clear();
|
|||||||
list_Tools->clear();
|
|||||||
list_Internet->clear();
|
|||||||
@ -252,45 +317,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<Gtk::ListStore> >k_list){
|
|||||||
void MainWindow::tempate_icon_select(Gtk::IconView *icon, Glib::RefPtr<Gtk::ListStore> >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,90 +368,91 @@ void MainWindow::tempate_icon_select(Gtk::IconView *icon, Glib::RefPtr<Gtk::List
|
|||||||
txtCmd->set_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);
|
|||||||
this->denamic_cmd();
|
|||||||
break;
|
|||||||
}
|
|||||||
}
|
|||||||
}
|
|||||||
}
|
|||||||
|
|||||||
void MainWindow::unselect_icon(Gtk::IconView *icon_entry){
|
|||||||
for (int index=0; index<10; ++index){
|
|||||||
void MainWindow::unselect_icon(Gtk::IconView *icon_entry) {
|
|||||||
for (int index=0; index<10; ++index) {
|
|||||||
Gtk::IconView *icon = this->array_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 (Высокий)");
|
|||||||
lblTimeEpriorityLow->set_text(_("19 (Low)"));
|
|||||||
lblTime4EpriorityHigh->set_text(_("0 (High)"));
|
|||||||
scalePriority->set_inverted(true);
|
|||||||
this->pars_dir_bin();
|
|||||||
this->pars_dir_terminal();
|
|||||||
this->pars_users();
|
|||||||
this->is_user_wheel();
|
|||||||
cmbUser->set_active_text(user_exec_app);
|
|||||||
this->activ_or_block_execute_epriority();
|
|||||||
this->changed_user();
|
|||||||
cmbUser->set_active(0);
|
|||||||
cmbUser->set_sensitive(false);
|
|||||||
lblInfoUserName->set_sensitive(false);
|
|||||||
rbPkexec->set_sensitive(false);
|
|||||||
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);
|
|||||||
|
|||||||
cmbTerminal->set_sensitive(false);
|
|||||||
ubl_make_plugs(boxAbout, boxAbout, socket_ext_id_I, 0);
|
|||||||
}
|
|||||||
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);
|
|||||||
lblInfoNooPriority->set_sensitive(flag);
|
|||||||
lblTimeEpriorityLow->set_sensitive(flag);
|
|||||||
lblTime4EpriorityHigh->set_sensitive(flag);
|
|||||||
this->denamic_cmd();
|
|||||||
}
|
|||||||
|
|||||||
void MainWindow::open_filemaneg(){
|
|||||||
void MainWindow::open_filemaneg() {
|
|||||||
wndChooseFileWallpaper->set_current_folder("/bin/");
|
|||||||
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,8 +461,38 @@ void MainWindow::get_path_filemaneg(){
|
|||||||
this->denamic_cmd();
|
|||||||
}
|
|||||||
|
|||||||
void MainWindow::tempalte_row(string Name, string Exec, string path , Glib::RefPtr<Gtk::ListStore> &dtk_list){
|
|||||||
vector <size_t> MainWindow::find_all(string &text, string &word) {
|
|||||||
size_t index{};
|
|||||||
vector <size_t> list_index;
|
|||||||
while ((index = text.find(word, index)) != std::string::npos)
|
|||||||
{
|
|||||||
index += word.length();
|
|||||||
list_index.push_back(index);
|
|||||||
}
|
|||||||
return list_index;
|
|||||||
}
|
|||||||
|
|||||||
void MainWindow::tempalte_row(string Name, string Exec, string path , Glib::RefPtr<Gtk::ListStore> &dtk_list) {
|
|||||||
Gtk::TreeModel::Row row = *(dtk_list->append());
|
|||||||
string s_remove[] = {".png", ".jpg", ".jpeg", ".svg", ".xpm"};
|
|||||||
string str_search = "/";
|
|||||||
if (path.find(str_search) != string::npos){
|
|||||||
vector <size_t> list_index = this->find_all(path, str_search);
|
|||||||
int index = list_index.size();
|
|||||||
if (index>1){
|
|||||||
index = index-1;
|
|||||||
index = list_index.at(index);
|
|||||||
if (index){
|
|||||||
size_t len_path = path.length();
|
|||||||
path = path.substr(index, len_path);
|
|||||||
}
|
|||||||
}
|
|||||||
}
|
|||||||
for (string &del: s_remove){
|
|||||||
if (path.find(del) != string::npos){
|
|||||||
str_remove(path, del);
|
|||||||
}
|
|||||||
}
|
|||||||
row[m_Columns.m_col_filename] = path;
|
|||||||
row[m_Columns.m_col_description] = Name;
|
|||||||
row[m_Columns.icon_name] = path;
|
|||||||
@ -406,7 +501,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 +513,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 +552,115 @@ 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){
|
|||||||
//chbTerminal->set_active(true);
|
|||||||
}
|
|||||||
if (rbPkexec->get_active()){
|
|||||||
str_variants_root = " pkexec --user " + cmbUser->get_active_text();
|
|||||||
if (cbxExecuteEpriority->get_active()){
|
|||||||
if (chbAnotherUser->get_active()) {
|
|||||||
if (rbPkexec->get_active()) {
|
|||||||
str_variants_root = "pkexec --user " + cmbUser->get_active_text();
|
|||||||
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()){
|
|||||||
str_variants_root += " -c \" DISPLAY=$DISPLAY ";
|
|||||||
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()){
|
|||||||
str_variants_root="sudo ";
|
|||||||
if (user_exec_app==cmbUser->get_active_text()) {
|
|||||||
str_variants_root = "sudo ";
|
|||||||
}
|
|||||||
else{
|
|||||||
str_variants_root="sudo -u " + cmbUser->get_active_text() + " ";
|
|||||||
str_variants_root = "sudo -u " + cmbUser->get_active_text() + " ";
|
|||||||
}
|
|||||||
if (cbxExecuteEpriority->get_active()){
|
|||||||
str_variants_root += " nice -n " + to_string(spinPriority->get_value_as_int()) + " ";
|
|||||||
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)){
|
|||||||
str_nice_cmd = " nice -n " + to_string(spinPriority->get_value_as_int()) + " ";
|
|||||||
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) {
|
|||||||
string name_terminal = cmbTerminal->get_active_text();
|
|||||||
if (name_terminal.length() != 0){
|
|||||||
|
asmeron
commented 3 years ago
Review
Перечень возможных терминалов вынести в массив, который описать в заголовке ! |
|||||||
if (name_terminal == "xfce4-terminal") {
|
|||||||
str_cmd_terminal = "xfce4-terminal -x ";
|
|||||||
}
|
|||||||
else if (name_terminal == "konsole") {
|
|||||||
str_cmd_terminal = "konsole -e ";
|
|||||||
}
|
|||||||
else if (name_terminal == "xterm") {
|
|||||||
str_cmd_terminal = "xterm -e ";
|
|||||||
}
|
|||||||
else{
|
|||||||
str_cmd_terminal = "";
|
|||||||
}
|
|||||||
}
|
|||||||
else{
|
|||||||
str_cmd_terminal = "";
|
|||||||
}
|
|||||||
|
|||||||
}
|
|||||||
else{
|
|||||||
str_cmd_terminal = "";
|
|||||||
}
|
|||||||
string cmd = "";
|
|||||||
if (path_file.length()>0){
|
|||||||
cmd = "nohup " + str_nice_cmd + str_cmd_terminal + str_variants_root + " xdg-open '" + path_file + "' ";
|
|||||||
if (path_file.length() > 0) {
|
|||||||
if (access(path_file.c_str(), X_OK) != -1) {
|
|||||||
cmd = str_nice_cmd + str_cmd_terminal + str_variants_root + " " + path_file;
|
|||||||
}
|
|||||||
else{
|
|||||||
cmd = str_nice_cmd + str_cmd_terminal + str_variants_root + " xdg-open '" + path_file + "' ";
|
|||||||
}
|
|||||||
else if (name_app.length()>0){
|
|||||||
cmd = "nohup " + str_nice_cmd + str_cmd_terminal + str_variants_root + name_app;
|
|||||||
|
|||||||
}
|
|||||||
else if (name_app.length() > 0) {
|
|||||||
cmd = str_nice_cmd + str_cmd_terminal + str_variants_root + name_app;
|
|||||||
}
|
|||||||
else if (user_cmd.length()>0){
|
|||||||
cmd = "nohup " + str_nice_cmd + str_cmd_terminal + str_variants_root + " " + user_cmd;
|
|||||||
else if (user_cmd.length() > 0) {
|
|||||||
cmd = 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.find("-x su ") != string::npos)) {
|
|||||||
cmd+=" \"";
|
|||||||
}
|
|||||||
cmd = "nohup " + 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 +675,91 @@ 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()){
|
|||||||
string MainWindow::call(string cmd) {
|
|||||||
FILE *fp;
|
|||||||
int status;
|
|||||||
char path[PATH_MAX] = {0};
|
|||||||
fp = popen(cmd.c_str(), "r");
|
|||||||
if (fp == NULL) {
|
|||||||
exit(1);
|
|||||||
}
|
|||||||
while (fgets(path, PATH_MAX, fp) != NULL) {
|
|||||||
break;
|
|||||||
}
|
|||||||
status = pclose(fp);
|
|||||||
if (status == -1) {
|
|||||||
exit(1);
|
|||||||
}
|
|||||||
return path;
|
|||||||
}
|
|||||||
|
|||||||
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(){
|
|||||||
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(){
|
|||||||
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 +768,47 @@ void MainWindow::pars_dir_bin(){
|
|||||||
rbSudo->set_sensitive(flag_sudo);
|
|||||||
}
|
|||||||
|
|||||||
void MainWindow::pars_users(){
|
|||||||
void MainWindow::pars_dir_terminal() {
|
|||||||
namespace fs = std::filesystem;
|
|||||||
std::string path = "/bin";
|
|||||||
string file_name = "";
|
|||||||
for (const auto & entry: fs::directory_iterator(path)) {
|
|||||||
file_name = entry.path().filename().string();
|
|||||||
if (file_name == "konsole") {
|
|||||||
|
asmeron
commented 3 years ago
Review
Использовать массив терминалов для выборки и обработки |
|||||||
cmbTerminal->append("konsole");
|
|||||||
cmbTerminal->set_active_text("konsole");
|
|||||||
}
|
|||||||
else if (file_name == "xfce4-terminal") {
|
|||||||
cmbTerminal->append("xfce4-terminal");
|
|||||||
cmbTerminal->set_active_text("xfce4-terminal");
|
|||||||
}
|
|||||||
else if (file_name == "xterm") {
|
|||||||
cmbTerminal->append("xterm");
|
|||||||
}
|
|||||||
}
|
|||||||
}
|
|||||||
|
|||||||
void MainWindow::is_user_wheel(){
|
|||||||
string response = this->call("id -Gn");
|
|||||||
if (response.find("wheel") == string::npos){
|
|||||||
flag_sudo = false;
|
|||||||
rbSudo->set_sensitive(flag_sudo);
|
|||||||
}
|
|||||||
size_t user_index = response.find(" ");
|
|||||||
if (user_index!=string::npos){
|
|||||||
user_exec_app = response.substr(0, user_index);
|
|||||||
}
|
|||||||
}
|
|||||||
|
|||||||
void MainWindow::pars_users() {
|
|||||||
//string str_uid_max = this->call("grep \"^UID_MAX\" /etc/login.defs | xargs | cut -d ' ' -f 2)");
|
|||||||
//int uid_max = 0;
|
|||||||
//if (str_uid_max.length() > 3){
|
|||||||
// int uid_max = stoi(str_uid_max);
|
|||||||
//}
|
|||||||
//else{
|
|||||||
int uid_max = 65534;
|
|||||||
|
asmeron
commented 3 years ago
Review
Задача по этому поводу существует, исправить ! |
|||||||
//}
|
|||||||
while (true) {
|
|||||||
errno = 0;
|
|||||||
passwd* entry = getpwent();
|
|||||||
@ -667,12 +818,10 @@ void MainWindow::pars_users(){
|
|||||||
}
|
|||||||
break;
|
|||||||
}
|
|||||||
|
|||||||
if (entry->pw_uid >= 1000 && entry->pw_uid!=65534){
|
|||||||
if ((entry->pw_uid >= 1000 && entry->pw_uid < uid_max) || entry->pw_uid == 0) {
|
|||||||
cmbUser->append(entry->pw_name);
|
|||||||
}
|
|||||||
}
|
|||||||
cmbUser->append("root");
|
|||||||
endpwent();
|
|||||||
}
|
|||||||
|
|||||||
@ -686,7 +835,7 @@ vector<std::string> MainWindow::split(const std::string &s, char delim) {
|
|||||||
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;
|
|||||||
@ -694,36 +843,36 @@ void MainWindow::str_remove(std::string& source, std::string & 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 +880,6 @@ void MainWindow::pars_apps(){
|
|||||||
}
|
|||||||
App.Name_desktop = file_name;
|
|||||||
App.Categories = split(str_Categories, ';');
|
|||||||
|
|||||||
}
|
|||||||
list_app.push_back(App);
|
|||||||
}
|
|||||||
|
|||||||
@ -1,14 +1,15 @@
|
||||
[Desktop Entry]
|
||||
Encoding=UTF-8
|
||||
Name=ublexec
|
||||
Name[ru]=Выполнить
|
||||
Name[ru]=Выполнить как...
|
||||
GenericName=Execution from user rights
|
||||
GenericName[ru]=Выполнить
|
||||
GenericName[ru]=Выполнить как...
|
||||
Comment=Execution from user rights
|
||||
Comment[ru]=Выполнить
|
||||
Comment[ru]=Выполнить как...
|
||||
Type=Application
|
||||
Exec=ublexec
|
||||
Icon=ublexec
|
||||
Icon=ru.ublinux.ublexec
|
||||
Terminal=false
|
||||
X-XfcePluggable=true
|
||||
Categories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings;X-UBL-SettingsManager;X-UBL-SystemSettings;
|
||||
X-UBLPluggable=true
|
||||
Categories=XFCE;GTK;Utility;X-GNOME-Utilities;System;
|
||||
@ -0,0 +1,127 @@
|
|||||||
# Russian translations for PACKAGE package.
|
|||||||
# Copyright (C) 2023 THE PACKAGE'S COPYRIGHT HOLDER
|
|||||||
# This file is distributed under the same license as the PACKAGE package.
|
|||||||
# Automatically generated, 2023.
|
|||||||
#
|
|||||||
msgid ""
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "https://wiki.ublinux.com"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "About"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Help"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Project Home Page"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "System"
|
|||||||
msgstr ""
|
|||||||
|
asmeron
commented 3 years ago
Review
Это говорил убрать !!
Igor1
commented 3 years ago
Review
Исправил. |
|||||||
|
|||||||
msgid "Development"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Other"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Office"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Education"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Settings"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Multimedia"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Internet"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Tools"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Graphics"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "ОК"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Exit"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Selecting Programs"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Running applications as a user with a\nspecified priority"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Team"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Run in the terminal emulator"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Command Line"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Run as another user"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "pkexec"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "su"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "sudo"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "User Name"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "User"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Change startup priority"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Priority"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "19 (Low)"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "-20 (High)"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "https://wiki.ublinux.com/ru/Программное_обеспечение/Программы_и_утилиты/Все/"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "0 (High)"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Run"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Select an executable file or program"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Please select File"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Warning!"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "ublexec"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "ubl-exec"
|
|||||||
msgstr ""
|
|||||||
|
|||||||
msgid "Copyright © UBSoft LLC, 2022 - "
|
|||||||
msgstr ""
|
|||||||
Уже писал об этом !
Дубликат который храниться в двух местах:
@install -Dm644 -t /usr/share/icons/hicolor/scalable/apps/ "ru.ublinux.${PKGNAME}.svg"@install -Dm644 -t /usr/share/${PKGNAME}/images/ "ru.ublinux.${PKGNAME}.svg"Для чего ??