@ -1,28 +1,25 @@
# include "ublexec.h"
# include "ublexec.h"
using namespace std ;
using namespace std ;
string path_app = " /usr/bin/ " ;
const string path_app = " /usr/bin/ " ;
string path_glade = " /usr/share/ublexec/ui/ublexec.glade " ;
const string path_glade = " /usr/share/ublexec/ui/ublexec.glade " ;
string path_css = " /usr/share/ublexec/css/style.css " ;
const string path_css = " /usr/share/ublexec/css/style.css " ;
string app_name = " ublexec " ;
const string app_name = " ublexec " ;
int socket_ext_id_I = 0 ;
int socket_ext_id_I = 0 ;
int socket_trd_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 )
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 : : OptionGroup { p_name , p_description , p_help } {
Glib : : OptionEntry socketIDArg ;
Glib : : OptionEntry socketIDArg ;
socketIDArg . set_long_name ( " socket-id " ) ;
socketIDArg . set_long_name ( " socket-id " ) ;
socketIDArg . set_flags ( Glib : : OptionEntry : : FLAG_IN_MAIN ) ;
socketIDArg . set_flags ( Glib : : OptionEntry : : FLAG_IN_MAIN ) ;
socketIDArg . set_description ( " Settings manager socket " ) ;
socketIDArg . set_description ( " Settings manager socket " ) ;
Glib : : OptionEntry socketExtId ;
Glib : : OptionEntry socketExtId ;
socketExtId . set_long_name ( " socket-ext-id " ) ;
socketExtId . set_long_name ( " socket-ext-id " ) ;
socketExtId . set_flags ( Glib : : OptionEntry : : FLAG_IN_MAIN ) ;
socketExtId . set_flags ( Glib : : OptionEntry : : FLAG_IN_MAIN ) ;
socketExtId . set_description ( " Settings manager secondary socket " ) ;
socketExtId . set_description ( " Settings manager secondary socket " ) ;
Glib : : OptionEntry socketTrdId ;
Glib : : OptionEntry socketTrdId ;
socketTrdId . set_long_name ( " socket-trd-id " ) ;
socketTrdId . set_long_name ( " socket-trd-id " ) ;
socketTrdId . set_flags ( Glib : : OptionEntry : : FLAG_IN_MAIN ) ;
socketTrdId . set_flags ( Glib : : OptionEntry : : FLAG_IN_MAIN ) ;
socketTrdId . set_description ( " Settings manager secondary socket " ) ;
socketTrdId . set_description ( " Settings manager secondary socket " ) ;
add_entry ( socketIDArg , m_socketID ) ;
add_entry ( socketIDArg , m_socketID ) ;
add_entry ( socketExtId , socket_ext_id_I ) ;
add_entry ( socketExtId , socket_ext_id_I ) ;
add_entry ( socketTrdId , socket_trd_id_I ) ;
add_entry ( socketTrdId , socket_trd_id_I ) ;
@ -42,7 +39,7 @@ MainWindow::MainWindow(Glib::RefPtr<Gtk::Builder> const& builder) {
this - > settings ( ) ;
this - > settings ( ) ;
}
}
void MainWindow : : get_builder ( ) {
void MainWindow : : get_builder ( ) {
builder - > get_widget ( " btnFilemaneg " , btnFilemaneg ) ;
builder - > get_widget ( " btnFilemaneg " , btnFilemaneg ) ;
builder - > get_widget ( " btnListApp " , btnListApp ) ;
builder - > get_widget ( " btnListApp " , btnListApp ) ;
builder - > get_widget ( " btnStart " , btnStart ) ;
builder - > get_widget ( " btnStart " , btnStart ) ;
@ -106,29 +103,31 @@ void MainWindow::get_builder(){
builder - > get_widget ( " aboutWindows " , aboutWindows ) ;
builder - > get_widget ( " aboutWindows " , aboutWindows ) ;
builder - > get_widget ( " btnSettings " , btnSettings ) ;
builder - > get_widget ( " btnSettings " , btnSettings ) ;
builder - > get_widget ( " btnBoxAboutDialog " , btnBoxAboutDialog ) ;
builder - > get_widget ( " btnBoxAboutDialog " , btnBoxAboutDialog ) ;
builder - > get_widget ( " boxAbout " , boxAbout ) ;
builder - > get_widget ( " cmbTerminal " , cmbTerminal ) ;
}
}
void MainWindow : : set_icon_array ( ) {
void MainWindow : : set_icon_array ( ) {
array_icon [ 0 ] = this - > iconGraphics ;
array_icon [ 0 ] = this - > iconGraphics ;
array_icon [ 1 ] = this - > iconTools ;
array_icon [ 1 ] = this - > iconTools ;
array_icon [ 2 ] = this - > iconInternet ;
array_icon [ 2 ] = this - > iconInternet ;
array_icon [ 3 ] = this - > iconMultimedia ;
array_icon [ 3 ] = this - > iconMultimedia ;
array_icon [ 4 ] = this - > iconSettings ;
array_icon [ 4 ] = this - > iconSettings ;
array_icon [ 5 ] = this - > iconEducation ;
array_icon [ 5 ] = this - > iconEducation ;
array_icon [ 6 ] = this - > iconOffice ;
array_icon [ 6 ] = this - > iconOffice ;
array_icon [ 7 ] = this - > iconOther ;
array_icon [ 7 ] = this - > iconOther ;
array_icon [ 8 ] = this - > iconDevelopment ;
array_icon [ 8 ] = this - > iconDevelopment ;
array_icon [ 9 ] = this - > iconSystem ;
array_icon [ 9 ] = this - > iconSystem ;
}
}
void MainWindow : : template_apps_obj ( Gtk : : IconView * icon , Glib : : RefPtr < Gtk : : ListStore > & gtk_list_app ) {
void MainWindow : : template_apps_obj ( Gtk : : IconView * icon , Glib : : RefPtr < Gtk : : ListStore > & gtk_list_app ) {
gtk_list_app = Gtk : : ListStore : : create ( m_Columns ) ;
gtk_list_app = Gtk : : ListStore : : create ( m_Columns ) ;
gtk_list_app - > set_sort_column ( m_Columns . m_col_description , Gtk : : SORT_ASCENDING ) ;
gtk_list_app - > set_sort_column ( m_Columns . m_col_description , Gtk : : SORT_ASCENDING ) ;
icon - > set_model ( gtk_list_app ) ;
icon - > set_model ( gtk_list_app ) ;
icon - > set_text_column ( m_Columns . m_col_description ) ;
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 ( ) ;
Glib : : RefPtr < Gtk : : CssProvider > cssProvider = Gtk : : CssProvider : : create ( ) ;
cssProvider - > load_from_path ( path_css ) ;
cssProvider - > load_from_path ( path_css ) ;
Glib : : RefPtr < Gtk : : StyleContext > styleContext = Gtk : : StyleContext : : create ( ) ;
Glib : : RefPtr < Gtk : : StyleContext > styleContext = Gtk : : StyleContext : : create ( ) ;
@ -140,10 +139,15 @@ void MainWindow::add_CSS(){
context_lbl_head - > add_class ( " textHead " ) ;
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 " ) ) ;
aboutWindows - > set_website ( _ ( " https://wiki.ublinux.com " ) ) ;
btnSynopsis - > set_label ( _ ( " Help " ) ) ;
btnSynopsis - > set_label ( _ ( " Help " ) ) ;
btnAbout - > set_label ( _ ( " About the program " ) ) ;
btnAbout - > set_label ( _ ( " About " ) ) ;
aboutWindows - > set_comments ( _ ( " ublexec " ) ) ;
aboutWindows - > set_comments ( _ ( " ublexec " ) ) ;
aboutWindows - > set_website_label ( _ ( " Project Home Page " ) ) ;
aboutWindows - > set_website_label ( _ ( " Project Home Page " ) ) ;
aboutWindows - > set_version ( _ ( version_application . c_str ( ) ) ) ;
aboutWindows - > set_version ( _ ( version_application . c_str ( ) ) ) ;
@ -154,14 +158,14 @@ void MainWindow::localization(){
dialogStartMenu - > set_title ( _ ( " Selecting Programs " ) ) ;
dialogStartMenu - > set_title ( _ ( " Selecting Programs " ) ) ;
lblInfoHead - > set_text ( _ ( " Running applications as a user with a \n specified priority " ) ) ;
lblInfoHead - > set_text ( _ ( " Running applications as a user with a \n specified priority " ) ) ;
lblinfoCmd - > set_text ( _ ( " Command Line " ) ) ;
lblinfoCmd - > set_text ( _ ( " Command Line " ) ) ;
lblInfoTime - > set_text ( _ ( " Team " ) ) ;
lblInfoTime - > set_text ( _ ( " Team : " ) ) ;
labInfoExecutTerm - > set_text ( _ ( " Run in the terminal emulator " ) ) ;
labInfoExecutTerm - > set_text ( _ ( " Run in the terminal emulator " ) ) ;
lblInfoUser - > set_text ( _ ( " User " ) ) ;
lblInfoUser - > set_text ( _ ( " User " ) ) ;
lblInfoUserOther - > set_text ( _ ( " Run as another user " ) ) ;
lblInfoUserOther - > set_text ( _ ( " Run as another user : " ) ) ;
lblInfoUserName - > set_text ( _ ( " User Name " ) ) ;
lblInfoUserName - > set_text ( _ ( " User Name : " ) ) ;
lblInfoNooPriority - > set_text ( _ ( " Priority " ) ) ;
lblInfoNooPriority - > set_text ( _ ( " Priority " ) ) ;
lblInfoExec - > set_text ( _ ( " Change startup priority " ) ) ;
lblInfoExec - > set_text ( _ ( " Change startup priority " ) ) ;
lblInfoPriority - > set_text ( _ ( " Priority " ) ) ;
lblInfoPriority - > set_text ( _ ( " Priority : " ) ) ;
lblMessageError - > set_text ( _ ( " Select an executable file or program " ) ) ;
lblMessageError - > set_text ( _ ( " Select an executable file or program " ) ) ;
lblGraphics - > set_text ( _ ( " Graphics " ) ) ;
lblGraphics - > set_text ( _ ( " Graphics " ) ) ;
lblTools - > set_text ( _ ( " Tools " ) ) ;
lblTools - > set_text ( _ ( " Tools " ) ) ;
@ -173,13 +177,14 @@ void MainWindow::localization(){
lblOther - > set_text ( _ ( " Other " ) ) ;
lblOther - > set_text ( _ ( " Other " ) ) ;
lblDevelopment - > set_text ( _ ( " Development " ) ) ;
lblDevelopment - > set_text ( _ ( " Development " ) ) ;
lblSystem - > set_text ( _ ( " System " ) ) ;
lblSystem - > set_text ( _ ( " System " ) ) ;
}
}
void MainWindow : : event ( ) {
void MainWindow : : event ( ) {
btnFilemaneg - > signal_clicked ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : open_filemaneg ) ) ;
btnFilemaneg - > signal_clicked ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : open_filemaneg ) ) ;
btnListApp - > signal_clicked ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : open_list_app ) ) ;
btnListApp - > signal_clicked ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : open_list_app ) ) ;
btnStart - > signal_clicked ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : entry_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 ) ) ;
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 ) ) ;
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 ) ) ;
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 ) ) ;
iconDevelopment - > signal_selection_changed ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : select_Development ) ) ;
iconSystem - > signal_selection_changed ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : select_System ) ) ;
iconSystem - > signal_selection_changed ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : select_System ) ) ;
btnSynopsis - > signal_activate ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : synopsis_show ) ) ;
btnSynopsis - > signal_activate ( ) . connect ( sigc : : mem_fun ( * this , & MainWindow : : synopsis_show ) ) ;
btnAbout - > signal_activate ( ) . connect ( [ & ] ( ) { aboutWindows - > show ( ) ; } ) ;
btnAbout - > signal_activate ( ) . connect ( [ & ] ( ) { aboutWindows - > show ( ) ; } ) ;
cmbUser - > signal_changed ( ) . connect ( [ & ] ( ) { denamic_cmd ( ) ; changed_user ( ) ; } ) ;
cmbUser - > signal_changed ( ) . connect ( [ & ] ( ) { changed_user ( ) ; denamic_cmd ( ) ; } ) ;
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_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_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 ) ) ;
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 : : delete_cmd ( const int & x , const int & y ) {
if ( y > 1 ) {
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 : : 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 ) ;
chbTerminal - > set_active ( false ) ;
chbAnotherUser - > set_active ( false ) ;
chbAnotherUser - > set_active ( false ) ;
cbxExecuteEpriority - > 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 ) {
bool MainWindow : : focus_in_txt_cmd ( GdkEventFocus * event ) {
if ( user_cmd . length ( ) ! = 0 ) {
if ( user_cmd . length ( ) ! = 0 ) {
//user_cmd_old = user_cmd;gi
}
}
else if ( name_app . length ( ) ! = 0 ) {
else if ( name_app . length ( ) ! = 0 ) {
//name_app_old = name_app;
}
}
else if ( path_file . length ( ) ! = 0 ) {
else if ( path_file . length ( ) ! = 0 ) {
//path_file_old = path_file;
}
}
else {
else {
user_cmd = txtCmd - > get_text ( ) ;
user_cmd = txtCmd - > get_text ( ) ;
@ -234,12 +299,12 @@ bool MainWindow::focus_in_txt_cmd(GdkEventFocus* event){
return true ;
return true ;
}
}
void MainWindow : : synopsis_show ( ) {
void MainWindow : : synopsis_show ( ) {
string cmd = " xdg-open " + string ( _ ( " https://wiki.ublinux.com/ru/Пр о г р а ммно е _о б е с пе че ние /Пр о г р а ммы_и_у тилиты/В с е / " ) ) + app_name + " & " ;
system ( " xdg-open https://wiki.ublinux.ru/ru/home & " ) ;
system ( cmd . c_str ( ) ) ;
}
}
void MainWindow : : icon_clear ( ) {
void MainWindow : : icon_clear ( ) {
list_Graphics - > clear ( ) ;
list_Graphics - > clear ( ) ;
list_Tools - > clear ( ) ;
list_Tools - > clear ( ) ;
list_Internet - > clear ( ) ;
list_Internet - > clear ( ) ;
@ -252,45 +317,44 @@ void MainWindow::icon_clear(){
list_System - > clear ( ) ;
list_System - > clear ( ) ;
}
}
void MainWindow : : ok_close_entry_app ( ) {
void MainWindow : : ok_close_entry_app ( ) {
this - > icon_clear ( ) ;
this - > icon_clear ( ) ;
dialogStartMenu - > hide ( ) ;
dialogStartMenu - > hide ( ) ;
}
}
void MainWindow : : select_Graphics ( ) {
void MainWindow : : select_Graphics ( ) {
this - > tempate_icon_select ( this - > iconGraphics , list_Graphics ) ;
this - > tempate_icon_select ( this - > iconGraphics , list_Graphics ) ;
}
}
void MainWindow : : select_Tools ( ) {
void MainWindow : : select_Tools ( ) {
this - > tempate_icon_select ( this - > iconTools , list_Tools ) ;
this - > tempate_icon_select ( this - > iconTools , list_Tools ) ;
}
}
void MainWindow : : select_Internet ( ) {
void MainWindow : : select_Internet ( ) {
this - > tempate_icon_select ( this - > iconInternet , list_Internet ) ;
this - > tempate_icon_select ( this - > iconInternet , list_Internet ) ;
}
}
void MainWindow : : select_Multimedia ( ) {
void MainWindow : : select_Multimedia ( ) {
this - > tempate_icon_select ( this - > iconMultimedia , list_Multimedia ) ;
this - > tempate_icon_select ( this - > iconMultimedia , list_Multimedia ) ;
}
}
void MainWindow : : select_Settings ( ) {
void MainWindow : : select_Settings ( ) {
this - > tempate_icon_select ( this - > iconSettings , list_Settings ) ;
this - > tempate_icon_select ( this - > iconSettings , list_Settings ) ;
}
}
void MainWindow : : select_Education ( ) {
void MainWindow : : select_Education ( ) {
this - > tempate_icon_select ( this - > iconEducation , list_Education ) ;
this - > tempate_icon_select ( this - > iconEducation , list_Education ) ;
}
}
void MainWindow : : select_Office ( ) {
void MainWindow : : select_Office ( ) {
this - > tempate_icon_select ( this - > iconOffice , list_Office ) ;
this - > tempate_icon_select ( this - > iconOffice , list_Office ) ;
}
}
void MainWindow : : select_Other ( ) {
void MainWindow : : select_Other ( ) {
this - > tempate_icon_select ( this - > iconOther , list_Other ) ;
this - > tempate_icon_select ( this - > iconOther , list_Other ) ;
}
}
void MainWindow : : select_Development ( ) {
void MainWindow : : select_Development ( ) {
this - > tempate_icon_select ( this - > iconDevelopment , list_Development ) ;
this - > tempate_icon_select ( this - > iconDevelopment , list_Development ) ;
}
}
void MainWindow : : select_System ( ) {
void MainWindow : : select_System ( ) {
this - > tempate_icon_select ( this - > iconSystem , list_System ) ;
this - > tempate_icon_select ( this - > iconSystem , list_System ) ;
}
}
void MainWindow : : tempate_icon_select ( Gtk : : IconView * icon , Glib : : RefPtr < Gtk : : ListStore > & gtk_list ) {
void MainWindow : : tempate_icon_select ( Gtk : : IconView * icon , Glib : : RefPtr < Gtk : : ListStore > & gtk_list ) {
auto selected = ( * icon ) . get_selected_items ( ) ;
auto selected = ( * icon ) . get_selected_items ( ) ;
if ( ! selected . empty ( ) )
if ( ! selected . empty ( ) ) {
{
this - > set_icon_array ( ) ;
this - > set_icon_array ( ) ;
this - > unselect_icon ( icon ) ;
this - > unselect_icon ( icon ) ;
const Gtk : : TreeModel : : Path & path = * selected . begin ( ) ;
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 ) ;
txtCmd - > set_text ( app_name_exec ) ;
name_app = txtCmd - > get_text ( ) ;
name_app = txtCmd - > get_text ( ) ;
int len_name_app = name_app . length ( ) ;
int len_name_app = name_app . length ( ) ;
string array_del [ ] = { " %f " , " %F " , " %d " , " %D " , " %n " , " %N " , " %U " } ;
string array_del [ ] = { " %f " , " %F " , " %d " , " %D " , " %n " , " %N " , " %U " } ;
for ( auto & del_sim : array_del ) {
for ( auto & del_sim : array_del ) {
str_remove ( name_app , del_sim ) ;
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 ) ;
txtCmd - > set_text ( name_app ) ;
this - > denamic_cmd ( ) ;
break ;
break ;
}
}
}
}
}
}
}
}
void MainWindow : : unselect_icon ( Gtk : : IconView * icon_entry ) {
void MainWindow : : unselect_icon ( Gtk : : IconView * icon_entry ) {
for ( int index = 0 ; index < 10 ; + + index ) {
for ( int index = 0 ; index < 10 ; + + index ) {
Gtk : : IconView * icon = this - > array_icon [ index ] ;
Gtk : : IconView * icon = this - > array_icon [ index ] ;
if ( icon_entry ! = icon ) {
if ( icon_entry ! = icon ) {
icon - > unselect_all ( ) ;
icon - > unselect_all ( ) ;
}
}
}
}
}
}
void MainWindow : : settings ( ) {
void MainWindow : : settings ( ) {
this - > pars_apps ( ) ;
this - > pars_apps ( ) ;
this - > get_builder ( ) ;
this - > get_builder ( ) ;
this - > event ( ) ;
this - > event ( ) ;
this - > localization ( ) ;
this - > localization ( ) ;
this - > add_CSS ( ) ;
this - > add_CSS ( ) ;
spinPriority - > set_range ( 0 , 19 ) ;
spinPriority - > set_range ( 0 , 19 ) ;
spinPriority - > set_increments ( 1.0 , - 1.0 ) ;
spinPriority - > set_increments ( 1.0 , - 1.0 ) ;
scalePriority - > set_range ( 0 , 19 ) ;
scalePriority - > set_range ( 0 , 19 ) ;
scalePriority - > set_value ( 0 ) ;
scalePriority - > set_value ( 0 ) ;
lblTimeEpriorityLow - > set_text ( " 19 (Низкий) " ) ;
lblTimeEpriorityLow - > set_text ( _ ( " 19 (Low) " ) ) ;
lblTime4EpriorityHigh - > set_text ( " 0 (Высокий) " ) ;
lblTime4EpriorityHigh - > set_text ( _ ( " 0 (High) " ) ) ;
scalePriority - > set_inverted ( true ) ;
scalePriority - > set_inverted ( true ) ;
this - > pars_dir_bin ( ) ;
this - > pars_dir_bin ( ) ;
this - > pars_dir_terminal ( ) ;
this - > pars_users ( ) ;
this - > pars_users ( ) ;
this - > is_user_wheel ( ) ;
cmbUser - > set_active_text ( user_exec_app ) ;
this - > activ_or_block_execute_epriority ( ) ;
this - > activ_or_block_execute_epriority ( ) ;
this - > changed_user ( ) ;
this - > changed_user ( ) ;
cmbUser - > set_active ( 0 ) ;
cmbUser - > set_sensitive ( false ) ;
cmbUser - > set_sensitive ( false ) ;
lblInfoUserName - > set_sensitive ( false ) ;
lblInfoUserName - > set_sensitive ( false ) ;
rbPkexec - > set_sensitive ( false ) ;
rbPkexec - > set_sensitive ( false ) ;
rbSu - > set_sensitive ( false ) ;
rbSu - > set_sensitive ( false ) ;
rbSudo - > set_sensitive ( false ) ;
rbSudo - > set_sensitive ( false ) ;
btnBoxAboutDialog - > set_visible ( false ) ;
btnBoxAboutDialog - > set_visible ( false ) ;
Gtk : : Widget * boxAbout ;
cmbTerminal - > set_sensitive ( false ) ;
builder - > get_widget ( " boxAbout " , boxAbout ) ;
ubl_make_plugs ( boxAbout , boxAbout , socket_ext_id_I , 0 ) ;
ubl_make_plugs ( boxAbout , boxAbout , 0 , socket_trd_id_I ) ;
}
}
void MainWindow : : close_entry_app ( ) {
void MainWindow : : close_entry_app ( ) {
this - > icon_clear ( ) ;
this - > icon_clear ( ) ;
dialogStartMenu - > hide ( ) ;
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 ( ) ;
messageError - > hide ( ) ;
}
}
void MainWindow : : activ_or_block_execute_epriority ( ) {
void MainWindow : : activ_or_block_execute_epriority ( ) {
bool flag = cbxExecuteEpriority - > get_active ( ) ;
bool flag = cbxExecuteEpriority - > get_active ( ) ;
scalePriority - > set_sensitive ( flag ) ;
scalePriority - > set_sensitive ( flag ) ;
spinPriority - > set_sensitive ( flag ) ;
spinPriority - > set_sensitive ( flag ) ;
lblInfoNooPriority - > set_sensitive ( flag ) ;
lblTimeEpriorityLow - > set_sensitive ( flag ) ;
lblTimeEpriorityLow - > set_sensitive ( flag ) ;
lblTime4EpriorityHigh - > set_sensitive ( flag ) ;
lblTime4EpriorityHigh - > set_sensitive ( flag ) ;
this - > denamic_cmd ( ) ;
this - > denamic_cmd ( ) ;
}
}
void MainWindow : : open_filemaneg ( ) {
void MainWindow : : open_filemaneg ( ) {
wndChooseFileWallpaper - > set_current_folder ( " /bin/ " ) ;
wndChooseFileWallpaper - > show ( ) ;
wndChooseFileWallpaper - > show ( ) ;
}
}
void MainWindow : : close_filemaneg ( ) {
void MainWindow : : close_filemaneg ( ) {
wndChooseFileWallpaper - > hide ( ) ;
wndChooseFileWallpaper - > hide ( ) ;
}
}
void MainWindow : : get_path_filemaneg ( ) {
void MainWindow : : get_path_filemaneg ( ) {
name_app = " " ;
name_app = " " ;
user_cmd = " " ;
user_cmd = " " ;
path_file = wndChooseFileWallpaper - > get_filename ( ) ;
path_file = wndChooseFileWallpaper - > get_filename ( ) ;
if ( path_file . length ( ) = = 0 ) { }
if ( path_file . length ( ) = = 0 ) { }
else {
else {
txtCmd - > set_text ( path_file ) ;
txtCmd - > set_text ( path_file ) ;
this - > close_filemaneg ( ) ;
this - > close_filemaneg ( ) ;
@ -396,8 +461,38 @@ void MainWindow::get_path_filemaneg(){
this - > denamic_cmd ( ) ;
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 ( ) ) ;
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_filename ] = path ;
row [ m_Columns . m_col_description ] = Name ;
row [ m_Columns . m_col_description ] = Name ;
row [ m_Columns . icon_name ] = path ;
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 ;
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 ( iconGraphics , list_Graphics ) ;
this - > template_apps_obj ( iconTools , list_Tools ) ;
this - > template_apps_obj ( iconTools , list_Tools ) ;
this - > template_apps_obj ( iconInternet , list_Internet ) ;
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 ( iconDevelopment , list_Development ) ;
this - > template_apps_obj ( iconSystem , list_System ) ;
this - > template_apps_obj ( iconSystem , list_System ) ;
string path = " " ;
string path = " " ;
for ( const auto & st_app : list_app ) {
for ( const auto & st_app : list_app ) {
for ( const auto & str_categor : st_app . Categories ) {
for ( const auto & str_categor : st_app . Categories ) {
path = st_app . Icon ;
path = st_app . Icon ;
if ( str_categor = = " Graphics " ) {
if ( str_categor = = " Graphics " ) {
this - > tempalte_row ( st_app . Name , st_app . Exec , path , list_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 ) ;
this - > tempalte_row ( st_app . Name , st_app . Exec , path , list_Tools ) ;
}
}
else if ( str_categor = = " Network " ) {
else if ( str_categor = = " Network " ) {
this - > tempalte_row ( st_app . Name , st_app . Exec , path , list_Internet ) ;
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 ) ;
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 ) ;
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 ) ;
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 ) ;
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 ) ;
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 ) ;
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 ) ;
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 MainWindow : : start_cmd ( string user_cmd ) {
string str_cmd_terminal = " " ;
string str_cmd_terminal = " " ;
string str_variants_root = " " ;
string str_variants_root = " " ;
string str_nice_cmd = " " ;
string str_nice_cmd = " " ;
if ( chbAnotherUser - > get_active ( ) ) {
if ( chbAnotherUser - > get_active ( ) ) {
if ( geteuid ( ) ! = 0 ) {
if ( rbPkexec - > get_active ( ) ) {
//chbTerminal->set_active(true);
str_variants_root = " pkexec --user " + cmbUser - > get_active_text ( ) ;
}
if ( cbxExecuteEpriority - > 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 + = " nice -n " + to_string ( spinPriority - > get_value_as_int ( ) ) ;
}
}
str_variants_root + = " env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY " ;
str_variants_root + = " env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY " ;
}
}
else if ( rbSu - > get_active ( ) ) {
else if ( rbSu - > get_active ( ) ) {
chbTerminal - > set_active ( true ) ;
chbTerminal - > set_active ( true ) ;
string str_user = cmbUser - > get_active_text ( ) ;
string str_user = cmbUser - > get_active_text ( ) ;
if ( str_user ! = " root " ) {
if ( str_user ! = " root " ) {
str_variants_root = " su -l " + cmbUser - > get_active_text ( ) ;
str_variants_root = " su -l " + cmbUser - > get_active_text ( ) ;
}
}
else {
else {
str_variants_root = " su " ;
str_variants_root = " su " ;
}
}
str_variants_root + = " -c \" DISPLAY=$DISPLAY " ;
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 ( ) ) + " " ;
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 ) ;
chbTerminal - > set_active ( true ) ;
if ( getlogin( ) = = cmbUser - > get_active_text ( ) ) {
if ( user_exec_app = = cmbUser - > get_active_text ( ) ) {
str_variants_root = " sudo " ;
str_variants_root = " sudo " ;
}
}
else {
else {
str_variants_root = " sudo -u " + cmbUser - > get_active_text ( ) + " " ;
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 ( ) ) + " " ;
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: " ;
string user_cmd_X = " xhost +SI:localuser: " ;
user_cmd_X + = cmbUser - > get_active_text ( ) ;
user_cmd_X + = cmbUser - > get_active_text ( ) ;
user_cmd_X + = " > /dev/null 2>&1 " ;
system ( user_cmd_X . c_str ( ) ) ;
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 ( ) ) + " " ;
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 ( ) ;
messageError - > show ( ) ;
return " " ;
return " " ;
}
}
if ( chbTerminal - > get_active ( ) = = true ) {
string name_terminal = cmbTerminal - > get_active_text ( ) ;
if ( name_terminal . length ( ) ! = 0 ) {
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 = " " ;
}
if ( chbTerminal - > get_active ( ) = = true ) {
str_cmd_terminal = " xterm -e " ;
}
}
else {
else {
str_cmd_terminal = " " ;
str_cmd_terminal = " " ;
}
}
string cmd = " " ;
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 + " ' " ;
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 ) {
else if ( name_app . length ( ) > 0 ) {
cmd = " nohup " + str_nice_cmd + str_cmd_terminal + str_variants_root + name_app ;
cmd = 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 ;
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 + = " \" " ;
}
}
cmd = " nohup " + cmd ;
cmd + = " > /dev/null 2>&1 " ;
cmd + = " > /dev/null 2>&1 " ;
return cmd ;
return cmd ;
}
}
void MainWindow : : call_app ( string & cmd ) {
void MainWindow : : call_app ( string & cmd ) {
if ( cmd . length ( ) ! = 0 ) {
if ( cmd . length ( ) ! = 0 ) {
std : : thread t ( [ & ] ( string cmd ) { system ( cmd . c_str ( ) ) ; } , cmd ) ;
std : : thread t ( [ & ] ( string cmd ) { system ( cmd . c_str ( ) ) ; } , cmd ) ;
t . detach ( ) ;
t . detach ( ) ;
}
}
}
}
void MainWindow : : denamic_cmd ( ) {
void MainWindow : : denamic_cmd ( ) {
if ( chbTerminal - > get_active ( ) = = true | | chbAnotherUser - > get_active ( ) = = true | | cbxExecuteEpriority - > get_active ( ) = = true ) {
if ( chbTerminal - > get_active ( ) = = true | | chbAnotherUser - > get_active ( ) = = true | | cbxExecuteEpriority - > get_active ( ) = = true ) {
if ( txtCmd - > get_text ( ) . length ( ) = = 0 ) {
if ( txtCmd - > get_text ( ) . length ( ) = = 0 ) {
chbTerminal - > set_active ( false ) ;
chbTerminal - > set_active ( false ) ;
chbAnotherUser - > set_active ( false ) ;
chbAnotherUser - > set_active ( false ) ;
cbxExecuteEpriority - > set_active ( false ) ;
cbxExecuteEpriority - > set_active ( false ) ;
@ -561,94 +675,91 @@ void MainWindow::denamic_cmd(){
}
}
}
}
else {
else {
if ( user_cmd . length ( ) ! = 0 ) {
if ( user_cmd . length ( ) ! = 0 ) {
txtCmd - > set_text ( this - > start_cmd ( user_cmd ) ) ;
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 ) ) ;
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 ) ) ;
txtCmd - > set_text ( this - > start_cmd ( user_cmd ) ) ;
}
}
}
}
}
}
bool MainWindow : : focus_out_txt_cmd ( GdkEventFocus * event ) {
string MainWindow : : call ( string cmd ) {
if ( cmd_old ! = txtCmd - > get_text ( ) ) {
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 ( ) ;
user_cmd = txtCmd - > get_text ( ) ;
}
}
return true ;
return true ;
}
}
void MainWindow : : entry_app ( ) {
void MainWindow : : entry_app ( ) {
this - > denamic_cmd ( ) ;
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 ( ) ;
string cmd = txtCmd - > get_text ( ) ;
this - > call_app ( cmd ) ;
this - > call_app ( cmd ) ;
}
}
void MainWindow : : changed_user ( ) {
void MainWindow : : activ_or_block_other_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 ( ) ;
bool flag = chbAnotherUser - > get_active ( ) ;
cmbUser - > set_active ( 0 ) ;
cmbUser - > set_active ( 0 ) ;
cmbUser - > set_sensitive ( flag ) ;
cmbUser - > set_sensitive ( flag ) ;
lblInfoUserName - > set_sensitive ( flag ) ;
lblInfoUserName - > set_sensitive ( flag ) ;
if ( flag_pkexec = = true ) {
if ( flag_pkexec = = true ) {
rbPkexec - > set_sensitive ( flag ) ;
rbPkexec - > set_sensitive ( flag ) ;
}
}
if ( flag_su = = true ) {
if ( flag_su = = true ) {
rbSu - > set_sensitive ( flag ) ;
rbSu - > set_sensitive ( flag ) ;
}
}
if ( flag_sudo = = true ) {
if ( flag_sudo = = true ) {
rbSudo - > set_sensitive ( flag ) ;
rbSudo - > set_sensitive ( flag ) ;
}
}
this - > denamic_cmd ( ) ;
this - > denamic_cmd ( ) ;
}
}
void MainWindow : : change_scale_priority ( ) {
void MainWindow : : change_scale_priority ( ) {
scalePriority - > set_value ( spinPriority - > get_value_as_int ( ) ) ;
scalePriority - > set_value ( spinPriority - > get_value_as_int ( ) ) ;
this - > denamic_cmd ( ) ;
this - > denamic_cmd ( ) ;
}
}
void MainWindow : : change_spin_priority ( ) {
void MainWindow : : change_spin_priority ( ) {
spinPriority - > set_value ( scalePriority - > get_value ( ) ) ;
spinPriority - > set_value ( scalePriority - > get_value ( ) ) ;
this - > denamic_cmd ( ) ;
this - > denamic_cmd ( ) ;
}
}
void MainWindow : : pars_dir_bin ( ) {
void MainWindow : : pars_dir_bin ( ) {
namespace fs = std : : filesystem ;
namespace fs = std : : filesystem ;
std : : string path = " /bin " ;
std : : string path = " /bin " ;
string file_name = " " ;
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 ( ) ;
file_name = entry . path ( ) . filename ( ) . string ( ) ;
if ( file_name = = " su " ) {
if ( file_name = = " su " ) {
flag_su = true ;
flag_su = true ;
}
}
else if ( file_name = = " sudo " ) {
else if ( file_name = = " sudo " ) {
flag_sudo = true ;
flag_sudo = true ;
}
}
else if ( file_name = = " pkexec " ) {
else if ( file_name = = " pkexec " ) {
flag_pkexec = true ;
flag_pkexec = true ;
}
}
}
}
@ -657,7 +768,47 @@ void MainWindow::pars_dir_bin(){
rbSudo - > set_sensitive ( flag_sudo ) ;
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 " ) {
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 ;
//}
while ( true ) {
while ( true ) {
errno = 0 ;
errno = 0 ;
passwd * entry = getpwent ( ) ;
passwd * entry = getpwent ( ) ;
@ -667,63 +818,61 @@ void MainWindow::pars_users(){
}
}
break ;
break ;
}
}
if ( ( entry - > pw_uid > = 1000 & & entry - > pw_uid < uid_max ) | | entry - > pw_uid = = 0 ) {
if ( entry - > pw_uid > = 1000 & & entry - > pw_uid ! = 65534 ) {
cmbUser - > append ( entry - > pw_name ) ;
cmbUser - > append ( entry - > pw_name ) ;
}
}
}
}
cmbUser - > append ( " root " ) ;
endpwent ( ) ;
endpwent ( ) ;
}
}
vector < std : : string > MainWindow : : split ( const std : : string & s , char delim ) {
vector < std : : string > MainWindow : : split ( const std : : string & s , char delim ) {
std : : stringstream ss ( s ) ;
std : : stringstream ss ( s ) ;
std : : string item ;
std : : string item ;
std : : vector < std : : string > elems ;
std : : vector < std : : string > elems ;
while ( std : : getline ( ss , item , delim ) ) {
while ( std : : getline ( ss , item , delim ) ) {
elems . push_back ( item ) ;
elems . push_back ( item ) ;
}
}
return elems ;
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 ( ) ;
string : : size_type n = to_remove . length ( ) ;
for ( string : : size_type i = source . find ( to_remove ) ;
for ( string : : size_type i = source . find ( to_remove ) ;
i ! = string : : npos ;
i ! = string : : npos ;
i = source . find ( to_remove ) )
i = source . find ( to_remove ) )
source . erase ( i , n ) ;
source . erase ( i , n ) ;
}
}
void MainWindow : : pars_apps ( ) {
void MainWindow : : pars_apps ( ) {
if ( list_app . size ( ) ! = 0 ) { return ; }
if ( list_app . size ( ) ! = 0 ) { return ; }
namespace fs = std : : filesystem ;
namespace fs = std : : filesystem ;
struct struct_App App ;
struct struct_App App ;
string file_name = " " ;
string file_name = " " ;
string str_Categories ;
string str_Categories ;
string path = " /usr/share/applications/ " ;
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 ( ) ;
file_name = entry . path ( ) . filename ( ) . string ( ) ;
path = " /usr/share/applications/ " + file_name ;
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 ( ) ;
GKeyFile * gfile = g_key_file_new ( ) ;
g_key_file_load_from_file ( gfile , path . c_str ( ) , G_KEY_FILE_KEEP_TRANSLATIONS , NULL ) ;
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 * 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 * 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 * 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 * 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 * Icon = g_key_file_get_string ( gfile , " Desktop Entry " , " Icon " , NULL ) ;
char * Mime = g_key_file_get_string ( gfile , " Desktop Entry " , " MimeType " , NULL ) ;
char * Mime = g_key_file_get_string ( gfile , " Desktop Entry " , " MimeType " , NULL ) ;
if ( Type = = NULL ) continue ;
if ( Type = = NULL ) continue ;
if ( Name = = NULL ) continue ;
if ( Name = = NULL ) continue ;
if ( Exec = = NULL ) continue ;
if ( Exec = = NULL ) continue ;
if ( Categories = = NULL ) continue ;
if ( Categories = = NULL ) continue ;
if ( Icon = = NULL ) continue ;
if ( Icon = = NULL ) continue ;
str_Categories = Categories ;
str_Categories = Categories ;
App . Name = Name ;
App . Name = Name ;
App . Type = Type ;
App . Type = Type ;
App . Exec = Exec ;
App . Exec = Exec ;
App . Icon = Icon ;
App . Icon = Icon ;
if ( Mime ! = NULL ) {
if ( Mime ! = NULL ) {
App . MimeType = Mime ;
App . MimeType = Mime ;
}
}
else {
else {
@ -731,7 +880,6 @@ void MainWindow::pars_apps(){
}
}
App . Name_desktop = file_name ;
App . Name_desktop = file_name ;
App . Categories = split ( str_Categories , ' ; ' ) ;
App . Categories = split ( str_Categories , ' ; ' ) ;
}
}
list_app . push_back ( App ) ;
list_app . push_back ( App ) ;
}
}