master #13

Merged
asmeron merged 52 commits from Igor1/ublexec:master into develop 3 years ago

@ -102,10 +102,10 @@ install: check uninstall
done
@for SIZE in 16 32 48; do \
install -dm755 /usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps; \
rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data ${PKGNAME}.svg -o "/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/${PKGNAME}.svg"; \
rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "ru.ublinux.${PKGNAME}.svg" -o "/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/ru.ublinux.${PKGNAME}.svg"; \
done
@install -dm755 /usr/share/icons/hicolor/scalable/apps
@install -Dm644 -t /usr/share/icons/hicolor/scalable/apps/ ${PKGNAME}.svg
@install -Dm644 -t /usr/share/icons/hicolor/scalable/apps/ "ru.ublinux.${PKGNAME}.svg"
@install -Dm755 -t /usr/bin/ ${CMAKE_BUILD_DIR}/${PKGNAME}
@install -Dm644 -t /usr/share/applications/ ${PKGNAME}.desktop
@install -Dm644 -t /usr/share/polkit-1/actions/ org.ublinux.pkexec.${PKGNAME}.exec.policy
@ -113,7 +113,7 @@ install: check uninstall
@install -Dm644 -t /usr/share/${PKGNAME}/ui/ ${PKGNAME}.glade
@install -Dm644 -t /usr/share/${PKGNAME}/css/ style.css
@install -Dm644 -t /usr/share/${PKGNAME}/images/ bg_top.png
@install -Dm644 -t /usr/share/${PKGNAME}/images/ ${PKGNAME}.svg
@install -Dm644 -t /usr/share/${PKGNAME}/images/ "ru.ublinux.${PKGNAME}.svg"
asmeron commented 3 years ago
Review

Уже писал об этом !
Дубликат который храниться в двух местах:

  • @install -Dm644 -t /usr/share/icons/hicolor/scalable/apps/ "ru.ublinux.${PKGNAME}.svg"
  • @install -Dm644 -t /usr/share/${PKGNAME}/images/ "ru.ublinux.${PKGNAME}.svg"

Для чего ??

Уже писал об этом ! Дубликат который храниться в двух местах: - `@install -Dm644 -t /usr/share/icons/hicolor/scalable/apps/ "ru.ublinux.${PKGNAME}.svg"` - `@install -Dm644 -t /usr/share/${PKGNAME}/images/ "ru.ublinux.${PKGNAME}.svg"` Для чего ??
# @install -Dm644 -t /usr/share/${PKGNAME}/images/ ${PKGNAME}.png
@gtk-update-icon-cache -fiq /usr/share/icons/hicolor/
@update-desktop-database --quiet 2>/dev/null

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 64 KiB

@ -1,17 +1,10 @@
#include "ublexec.h"
int main(int argc, char** argv)
{
int main(int argc, char** argv) {
string str_cmd_argv = "";
for (int i=1; i<argc; i++){
str_cmd_argv+= to_string(*argv[i]) + " ";
}
if (geteuid()!=0){
//string cmd = "pkexec " + app_name + " " + str_cmd_argv;
//system(cmd.c_str());
//return 0;
str_cmd_argv += to_string(*argv[i]) + " ";
}
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example.plug");
auto builder = Gtk::Builder::create_from_file(path_glade);
@ -19,11 +12,10 @@ int main(int argc, char** argv)
bindtextdomain("ublexec", "/usr/share/locale/");
bind_textdomain_codeset("ublexec", "UTF-8");
textdomain("ublexec");
if (argc!=1){
if (argc != 1){
Glib::init();
setlocale(LC_ALL, "");
Glib::OptionContext context;
CmdArgParser parser{
"Socket ID",
"Command line argument for socket ID communication.",
@ -32,18 +24,13 @@ int main(int argc, char** argv)
context.set_main_group(parser);
context.parse(argc, argv);
::Window socketID = parser.GetSocketID();
// Handle plug:
SettingsPlug plug{socketID, builder};
plug.show();
app->run(plug);
return 0;
}
else {
MainWindow* wnd = nullptr;
builder->get_widget_derived("window", wnd);
auto r = app->run(*wnd);

@ -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> &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->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> &gtk_list){
void MainWindow::tempate_icon_select(Gtk::IconView *icon, Glib::RefPtr<Gtk::ListStore> &gtk_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

Перечень возможных терминалов вынести в массив, который описать в заголовке !
xfce4-terminal -x
konsole -e
xterm -e

Перечень возможных терминалов вынести в массив, который описать в заголовке ! xfce4-terminal -x konsole -e xterm -e
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);
}

@ -19,10 +19,10 @@
using namespace std;
extern string path_app;
extern string app_name;
extern string path_glade;
extern string path_css;
extern const string path_app;
extern const string app_name;
extern const string path_glade;
extern const string path_css;
extern int socket_ext_id_I;
extern int socket_trd_id_I;
void me_thread(string cmd);
@ -86,14 +86,18 @@ public:
void delete_cmd(const int &x,const int &y);
void synopsis_show();
void denamic_cmd();
void is_user_wheel();
void sudo_nice();
vector <size_t> find_all(string &text, string &word);
bool focus_out_txt_cmd(GdkEventFocus* event);
bool focus_in_txt_cmd(GdkEventFocus* event);
void unselect_icon(Gtk::IconView *icon_entry);
void pars_dir_terminal();
void str_remove(std::string& source, std::string & to_remove);
string call(string cmd);
vector<std::string> split(const std::string &s, char delim);
public:
class ModelColumns : public Gtk::TreeModel::ColumnRecord
{
class ModelColumns : public Gtk::TreeModel::ColumnRecord {
public:
ModelColumns()
{
@ -154,7 +158,6 @@ public:
Gtk::Label *lblInfoNooPriority;
Gtk::Label *lblInfoExec;
Gtk::Label *lblInfoPriority;
Gtk::Label *lblGraphics;
Gtk::Label *lblTools;
Gtk::Label *lblInternet;
@ -166,7 +169,6 @@ public:
Gtk::Label *lblDevelopment;
Gtk::Label *lblSystem;
Gtk::Label *lblHeaderName;
Gtk::IconView *iconGraphics;
Gtk::IconView *iconTools;
Gtk::IconView *iconInternet;
@ -183,7 +185,7 @@ public:
Gtk::AboutDialog *aboutWindows;
Gtk::MenuButton *btnSettings;
Gtk::ButtonBox *btnBoxAboutDialog;
Gtk::ComboBoxText *cmbTerminal;
Glib::RefPtr<Gtk::ListStore> list_Graphics;
Glib::RefPtr<Gtk::ListStore> list_Tools;
Glib::RefPtr<Gtk::ListStore> list_Internet;
@ -194,13 +196,15 @@ public:
Glib::RefPtr<Gtk::ListStore> list_Other;
Glib::RefPtr<Gtk::ListStore> list_Development;
Glib::RefPtr<Gtk::ListStore> list_System;
Gtk::Widget *boxAbout;
public:
string version_application = "1.0";
string cmd_old = "";
string user_cmd="";
string user_cmd_old="";
string name_app_old="";
string path_file_old="";
string user_exec_app = "";
string user_cmd = "";
string user_cmd_old = "";
string name_app_old = "";
string path_file_old = "";
string execute_cmd = "";
string path_file = "";
string name_app = "";
@ -208,20 +212,20 @@ public:
bool flag_su = false;
bool flag_sudo = false;
string path_file_name;
struct struct_App{
struct struct_App {
string Name_desktop;
string Name;
string Exec;
string Icon;
string MimeType;
string Type;
vector<std::string> Categories;};
vector<std::string> Categories;
};
list <struct_App> list_app;
set <string> set_categories;
int index_exec_gui_apps = 0;
Gtk::IconView* array_icon[10];
};
class SettingsPlug : public Gtk::Plug{

@ -61,12 +61,3 @@
.menuitemtop{
margin-bottom:0px;
}
.bkim{
background-image: -gtk-gradient(linear,
left top, left bottom,
from(@entry_background_a),
color-stop(0.20, @entry_background_b),
color-stop(0.85, @entry_background_c),
to(@entry_background_d));
}

@ -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;

@ -16,17 +16,19 @@
<property name="icon-name">ubl-settings-datetime</property>
<property name="type-hint">dialog</property>
<property name="urgency-hint">True</property>
<property name="program-name">ublexec</property>
<property name="accept-focus">False</property>
<property name="focus-on-map">False</property>
<property name="program-name">ubl-exec</property>
<property name="version">1.0</property>
<property name="copyright" translatable="yes">Copyright © 2023 - UBSoft Software LLC</property>
<property name="comments" translatable="yes">Setting the date and time</property>
<property name="copyright" translatable="yes">Copyright © UBSoft LLC, 2022 - </property>
<property name="comments" translatable="yes">ublexec</property>
<property name="website">https://ublinux.ru/</property>
<property name="website-label" translatable="yes">Project Home Page</property>
<property name="license" translatable="yes">Это приложение распространяется без каких-либо гарантий.
Подробнее в &lt;a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"&gt;GNU General Public License, версии 2 или позднее&lt;/a&gt;.</property>
<property name="authors">UBGroup</property>
<property name="artists">UBGroup</property>
<property name="logo-icon-name">ublexec</property>
<property name="logo-icon-name">ru.ublinux.ublexec</property>
<property name="wrap-license">True</property>
<property name="license-type">gpl-2-0</property>
<child internal-child="vbox">
@ -64,6 +66,7 @@
<property name="width-request">450</property>
<property name="height-request">240</property>
<property name="can-focus">False</property>
<property name="icon-name">ru.ublinux.ublexec</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
@ -958,8 +961,6 @@
<property name="margin-bottom">6</property>
<property name="stock">gtk-media-play</property>
</object>
<<<<<<< HEAD
=======
<object class="GtkListStore" id="list_Other">
<columns>
<!-- column-name gchararray1 -->
@ -988,7 +989,6 @@
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Synopsis</property>
<property name="use-underline">True</property>
<style>
<class name="menuitemtop"/>
</style>
@ -998,17 +998,16 @@
<object class="GtkMenuItem" id="btnAbout">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">About the program</property>
<property name="use-underline">True</property>
<property name="label" translatable="yes">About</property>
<style>
<class name="menuitembottom"/>
</style>
</object>
</child>
</object>
>>>>>>> devel
<object class="GtkWindow" id="window">
<property name="can-focus">False</property>
<property name="icon-name">ru.ublinux.ublexec</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
@ -1029,7 +1028,7 @@
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="pixel-size">69</property>
<property name="icon-name">ublexec</property>
<property name="icon-name">ru.ublinux.ublexec</property>
</object>
<packing>
<property name="expand">False</property>
@ -1083,9 +1082,10 @@ specified priority</property>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkFrame">
<object class="GtkFrame" id="frame1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
@ -1094,6 +1094,7 @@ specified priority</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="hexpand">True</property>
<property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property>
<child>
@ -1102,14 +1103,16 @@ specified priority</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-start">5</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">True</property>
<child>
<object class="GtkLabel" id="lblInfoTime">
<property name="width-request">145</property>
<property name="width-request">0</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
@ -1118,7 +1121,7 @@ specified priority</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="label" translatable="yes" context="Time" comments="Time">Team</property>
<property name="label" translatable="yes" context="Time" comments="Time">Team:</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
</object>
@ -1130,7 +1133,7 @@ specified priority</property>
</child>
<child>
<object class="GtkEntry" id="txtCmd">
<property name="width-request">330</property>
<property name="width-request">381</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin-left">5</property>
@ -1148,6 +1151,7 @@ specified priority</property>
</child>
<child>
<object class="GtkButton" id="btnFilemaneg">
<property name="width-request">51</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
@ -1182,6 +1186,7 @@ specified priority</property>
</child>
<child>
<object class="GtkButton" id="btnListApp">
<property name="width-request">51</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
@ -1225,9 +1230,10 @@ specified priority</property>
<property name="can-focus">False</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="hexpand">True</property>
<child>
<object class="GtkLabel">
<property name="width-request">131</property>
<property name="width-request">110</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">15</property>
@ -1268,6 +1274,34 @@ specified priority</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="cmbTerminal">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="margin-left">9</property>
<property name="margin-right">5</property>
<property name="margin-end">5</property>
<property name="margin-bottom">6</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="width-request">116</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
@ -1281,6 +1315,7 @@ specified priority</property>
<object class="GtkLabel" id="lblinfoCmd">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes" context="Setting the date and time" comments="Setting the date and time">Command Line</property>
</object>
</child>
@ -1293,7 +1328,7 @@ specified priority</property>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
@ -1303,15 +1338,17 @@ specified priority</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-bottom">5</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkFrame">
<object class="GtkFrame" id="frame2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="hexpand">True</property>
<property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property>
<child>
@ -1320,11 +1357,13 @@ specified priority</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-start">5</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">True</property>
<child>
<object class="GtkCheckButton" id="chbAnotherUser">
<property name="visible">True</property>
@ -1343,7 +1382,7 @@ specified priority</property>
<object class="GtkLabel" id="lblInfoUserOther">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Run as another user</property>
<property name="label" translatable="yes">Run as another user:</property>
</object>
</child>
</object>
@ -1426,9 +1465,10 @@ specified priority</property>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">True</property>
<child>
<object class="GtkLabel" id="lblInfoUserName">
<property name="width-request">145</property>
<property name="width-request">123</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
@ -1437,7 +1477,7 @@ specified priority</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="label" translatable="yes" context="Time" comments="Time">User Name</property>
<property name="label" translatable="yes" context="Time" comments="Time">User Name:</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
</object>
@ -1449,7 +1489,7 @@ specified priority</property>
</child>
<child>
<object class="GtkComboBoxText" id="cmbUser">
<property name="width-request">330</property>
<property name="width-request">381</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
@ -1465,6 +1505,19 @@ specified priority</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="width-request">0</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-end">100</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
@ -1478,6 +1531,7 @@ specified priority</property>
<object class="GtkLabel" id="lblInfoUser">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes" context="Setting the date and time" comments="Setting the date and time">User</property>
</object>
</child>
@ -1490,7 +1544,7 @@ specified priority</property>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
@ -1500,15 +1554,17 @@ specified priority</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-bottom">5</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkFrame">
<object class="GtkFrame" id="frame3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="hexpand">True</property>
<property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property>
<child>
@ -1517,6 +1573,7 @@ specified priority</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-start">5</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkCheckButton" id="cbxExecuteEpriority">
@ -1550,6 +1607,7 @@ specified priority</property>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">True</property>
<child>
<object class="GtkLabel" id="lblInfoPriority">
<property name="width-request">5</property>
@ -1560,8 +1618,7 @@ specified priority</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="label" translatable="yes" context="Time" comments="Time">Priority</property>
<property name="label" translatable="yes" context="Time" comments="Time">Priority:</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
</object>
@ -1573,14 +1630,14 @@ specified priority</property>
</child>
<child>
<object class="GtkScale" id="scalePriority">
<property name="width-request">-1</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="margin-bottom">9</property>
<property name="adjustment">adjustment1</property>
<property name="fill-level">20</property>
<property name="round-digits">0</property>
@ -1601,7 +1658,6 @@ specified priority</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="numeric">True</property>
</object>
<packing>
@ -1621,9 +1677,10 @@ specified priority</property>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">False</property>
<child>
<object class="GtkLabel">
<property name="width-request">65</property>
<property name="width-request">62</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">15</property>
@ -1647,7 +1704,6 @@ specified priority</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="label" translatable="yes" context="Time" comments="Time">19 (Low)</property>
<property name="wrap">True</property>
@ -1669,7 +1725,6 @@ specified priority</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="label" translatable="yes" context="Time" comments="Time">-20 (High)</property>
<property name="wrap">True</property>
@ -1683,7 +1738,7 @@ specified priority</property>
</child>
<child>
<object class="GtkLabel">
<property name="width-request">95</property>
<property name="width-request">107</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">end</property>
@ -1711,6 +1766,7 @@ specified priority</property>
<object class="GtkLabel" id="lblInfoNooPriority">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes" context="Setting the date and time" comments="Setting the date and time">Priority</property>
</object>
</child>
@ -1723,7 +1779,7 @@ specified priority</property>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
@ -1751,24 +1807,22 @@ specified priority</property>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
<<<<<<< HEAD
=======
<child type="titlebar">
<object class="GtkHeaderBar">
<object class="GtkHeaderBar" id="headerBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-close-button">True</property>
@ -1787,7 +1841,7 @@ specified priority</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">32</property>
<property name="icon-name">ublexec</property>
<property name="icon-name">ru.ublinux.ublexec</property>
</object>
</child>
<child>
@ -1825,11 +1879,11 @@ specified priority</property>
</child>
</object>
</child>
>>>>>>> devel
</object>
<object class="GtkMessageDialog" id="messageError">
<property name="can-focus">False</property>
<property name="title" translatable="yes">Внимание!</property>
<property name="icon-name">ru.ublinux.ublexec</property>
<property name="type-hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox">
@ -1890,6 +1944,7 @@ specified priority</property>
<property name="default-width">500</property>
<property name="default-height">400</property>
<property name="destroy-with-parent">True</property>
<property name="icon-name">ru.ublinux.ublexec</property>
<property name="type-hint">dialog</property>
<property name="skip-taskbar-hint">True</property>
<property name="urgency-hint">True</property>

@ -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

Это говорил убрать !!
Получается файл ublexec_ru.pot не соответствует ublexec_ru.po
Проверить вручную каждую строку !!

Это говорил убрать !! Получается файл `ublexec_ru.pot` не соответствует `ublexec_ru.po` Проверить вручную каждую строку !!
Igor1 commented 3 years ago
Review

Исправил.
e71e07ae31

Исправил. https://gitea.ublinux.ru/Igor1/ublexec/commit/e71e07ae3138b5936161d9d3f9e8c74ff4b3f3b3
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 ""

@ -1,15 +1,25 @@
# English translations for PACKAGE package.
# 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 ""
"Project-Id-Version: ubconfig 1.0\n"
"Report-Msgid-Bugs-To: info@ublinux.ru\n"
"POT-Creation-Date: 2020-02-22 23:22+0600\n"
"PO-Revision-Date: 2020-02-22 23:28+0600\n"
"Last-Translator: ublinux <info@ublinux.ru>\n"
"Language-Team: Russian - UBLinux Team <info@ublinux.ru>\n"
"Language: Russian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "https://wiki.ublinux.com"
msgstr "https://wiki.ublinux.ru"
msgid "About the program"
msgid "About"
msgstr "О программе"
msgid "Help"
@ -60,8 +70,8 @@ msgstr "Выбор программ"
msgid "Running applications as a user with a\nspecified priority"
msgstr "Запуск приложений от имени пользователя с\nуказанным приоритетом"
msgid "Team"
msgstr "Команда"
msgid "Team:"
msgstr "Команда:"
msgid "Run in the terminal emulator"
msgstr "Выполнить в эмуляторе терминала"
@ -69,8 +79,8 @@ msgstr "Выполнить в эмуляторе терминала"
msgid "Command Line"
msgstr "Командная строка"
msgid "Run as another user"
msgstr "Выполнить от имени другого пользователя"
msgid "Run as another user:"
msgstr "Выполнить от имени другого пользователя:"
msgid "pkexec"
msgstr "pkexec"
@ -81,8 +91,8 @@ msgstr "su"
msgid "sudo"
msgstr "sudo"
msgid "User Name"
msgstr "Имя поьзователя"
msgid "User Name:"
msgstr "Имя пользователя:"
msgid "User"
msgstr "Пользователь"
@ -90,6 +100,9 @@ msgstr "Пользователь"
msgid "Change startup priority"
msgstr "Изменить приоритет запуска"
msgid "Priority:"
msgstr "Приоритет:"
msgid "Priority"
msgstr "Приоритет"
@ -99,6 +112,12 @@ msgstr "19 (Низкий)"
msgid "-20 (High)"
msgstr "-20 (Высокий)"
msgid "https://wiki.ublinux.com/ru/Программное_обеспечениерограммы_и_утилиты/Все/"
msgstr "https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/"
msgid "0 (High)"
msgstr "0 (Высокий)"
msgid "Run"
msgstr "Запустить"
@ -112,4 +131,10 @@ msgid "Warning!"
msgstr "Внимание!"
msgid "ublexec"
msgstr "Выполнить"
msgstr "Выполнить как..."
msgid "ubl-exec"
msgstr "ubl-exec"
msgid "Copyright © UBSoft LLC, 2022 - "
msgstr "Авторские права © ООО \"Юбисофт\", 2022 - "
Loading…
Cancel
Save