Merge pull request 'master' (#18) from Igor1/ubl-settings-bootloader:master into develop

Reviewed-on: #18
pull/19/head
Dmitry Razumov 3 years ago
commit a1054e27e2

@ -126,6 +126,7 @@ install: check uninstall
@install -Dm644 -t /usr/share/${PKGNAME}/ cmdline-linux.csv
@install -Dm644 -t /usr/share/${PKGNAME}/ grub-terminal-input.csv
@install -Dm644 -t /usr/share/${PKGNAME}/ grub-terminal-output.csv
@install -Dm644 -t /usr/share/${PKGNAME}/ grub-melodylist.csv
@if [ -z ${DESTDIR} ]; then \
[ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \
update-desktop-database --quiet &>/dev/null || true; \

@ -0,0 +1 @@
ubbeep,1 22 333 4444 5555
1 ubbeep 1 22 333 4444 5555

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 135 KiB

@ -31,6 +31,8 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissin
-fstack-clash-protection -fcf-protection")
set(SOURCE_FILES
menu_os.h
menu_os.cc
ubl-settings-bootloader-cm.h
ubl-settings-bootloader.h
ubl-settings-bootloader.cc

@ -85,7 +85,7 @@ void pars_flag(int index_start, int argc, char* argv[]) {
}
else{
if (index_start == 1){
g_print(_(no_recognized));
g_print(no_recognized);
}
}

@ -0,0 +1,173 @@
#include "menu_os.h"
Menu_os::Menu_os(/* args */)
{
}
Menu_os::~Menu_os()
{
}
void Menu_os::set_last_launched_os(string str_last_launched_os) {
this->str_last_launched_os = str_last_launched_os;
}
void Menu_os::set_builder(Glib::RefPtr<Gtk::Builder>& builder, string path_glade) {
this->builder = builder;
this->path_glade = path_glade;
builder->get_widget("popoverMenuOS", popoverMenuOS);
builder->get_widget("revealerL1", revealerL1);
builder->get_widget("revealerL2", revealerL2);
builder->get_widget("boxALLL3", boxALLL3);
builder->get_widget("boxLevel1", boxLevel1);
builder->get_widget("btnToLev1", btnToLev1);
revealerL1->set_reveal_child(true);
}
void Menu_os::set_map(vector<tuple<string, vector<string>>> &vec_list_os) {
this->vec_list_os = vec_list_os;
}
void Menu_os::init() {
revealerL1->set_reveal_child(true);
revealerL2->set_reveal_child(true);
size_t index_l1 = 0;
string key = "";
for (tuple<string, vector<string>> tuple_os: vec_list_os) {
key = get<0>(tuple_os);
vector<string> vec_value = get<1>(tuple_os);
map_menu_level_1[key] = new struct_menu_level1;
Glib::RefPtr<Gtk::Builder> builder_level_1 = Gtk::Builder::create_from_file(path_glade);
builder_level_1->get_widget("lblRevL1", map_menu_level_1[key]->lblRevL1);
builder_level_1->get_widget("btnToL2AndLv3", map_menu_level_1[key]->btnToL2AndLv3);
builder_level_1->get_widget("boxMenuLevel1", map_menu_level_1[key]->boxMenuLevel1);
map_menu_level_1[key]->btnToL2AndLv3_css = map_menu_level_1[key]->btnToL2AndLv3->get_style_context();
map_menu_level_1[key]->btnToL2AndLv3_css->add_class("noborder");
map_menu_level_1[key]->builder = builder_level_1;
boxLevel1->pack_start(*(map_menu_level_1[key]->boxMenuLevel1));
map_menu_level_1[key]->name = key;
this->html_last_launched_os(key, map_menu_level_1[key]->lblRevL1);
map_menu_level_1[key]->btnToL2AndLv3->signal_clicked().connect(
sigc::bind<Gtk::Label*, string&, string&> (sigc::mem_fun( *this,
&Menu_os::event_template), map_menu_level_1[key]->lblRevL1,
name_level_1, map_menu_level_1[key]->name));
if (vec_value.size()!= 0) {
builder_level_1->get_widget("revealerL3", map_menu_level_1[key]->revealer);
builder_level_1->get_widget("boxLevel3", map_menu_level_1[key]->boxLevel3);
boxALLL3->pack_start(*(map_menu_level_1[key]->revealer));
}
else {
map_menu_level_1[key]->revealer = NULL;
map_menu_level_1[key]->boxLevel3 = NULL;
}
size_t index_l3 = 0;
for (string& str_level_3: vec_value) {
auto builder_level_3 = Gtk::Builder::create_from_file(path_glade);
map_menu_level_1[key]->vec_menu_level_3.push_back(new struct_menu_level_3);
builder_level_3->get_widget("btnToL3",
map_menu_level_1[key]->vec_menu_level_3[index_l3]->btnToL3);
builder_level_3->get_widget("lblToL3",
map_menu_level_1[key]->vec_menu_level_3[index_l3]->lblToL3);
map_menu_level_1[key]->vec_menu_level_3[index_l3]->btnToL3_css =
map_menu_level_1[key]->vec_menu_level_3[index_l3]->btnToL3->get_style_context();
map_menu_level_1[key]->vec_menu_level_3[index_l3]->btnToL3_css->add_class("noborder");
this->html_last_launched_os(str_level_3, map_menu_level_1[key]->vec_menu_level_3[index_l3]->lblToL3);
map_menu_level_1[key]->boxLevel3->pack_start(
*(map_menu_level_1[key]->vec_menu_level_3[index_l3]->btnToL3));
map_menu_level_1[key]->vec_menu_level_3[index_l3]->btnToL3->signal_clicked().connect(
sigc::bind<Gtk::Label*, string&, string&> (sigc::mem_fun(*this,
&Menu_os::event_template), map_menu_level_1[key]->vec_menu_level_3[index_l3]->lblToL3,
name_level_3, map_menu_level_1[key]->name));
map_menu_level_1[key]->vec_menu_level_3[index_l3]->builder_level_3 = builder_level_3;
index_l3 += 1;
}
index_l1 += 1;
}
}
void Menu_os::close_revealer() {
for (auto& [key, values]: map_menu_level_1) {
if (values->revealer != NULL) {
values->revealer->set_reveal_child(false);
}
}
}
void Menu_os::show() {
revealerL1->set_reveal_child(true);
revealerL2->set_reveal_child(false);
this->close_revealer();
popoverMenuOS->show_all();
}
void Menu_os::event() {
btnToLev1->signal_clicked().connect(sigc::mem_fun(*this, &Menu_os::to_l1));
}
void Menu_os::set_entry(Gtk::Entry *entry) {
this->entry = entry;
}
void Menu_os::event_template(Gtk::Label* label, string& name_level, string& key) {
name_level = label->get_label();
key_global = key;
Utils::str_remove(name_level_1, "<b>");
Utils::str_remove(name_level_1, "</b>");
Utils::str_remove(name_level_3, "<b>");
Utils::str_remove(name_level_3, "</b>");
Gtk::Revealer *revealer = map_menu_level_1[key]->revealer;
if (&name_level == &name_level_1 && map_menu_level_1[key]->vec_menu_level_3.size() != 0) {
revealerL1->set_reveal_child(false);
revealerL2->set_reveal_child(true);
this->close_revealer();
revealer->set_reveal_child(true);
name_level_3 = "";
//entry->set_text(name_level_1);
}
else if (map_menu_level_1[key]->vec_menu_level_3.size() == 0) {
entry->set_text(name_level_1);
name_level_3 = "";
popoverMenuOS->hide();
}
else {
popoverMenuOS->hide();
entry->set_text(name_level_1 + name_level_3);
}
}
void Menu_os::to_l1() {
revealerL1->set_reveal_child(true);
revealerL2->set_reveal_child(false);
map_menu_level_1[key_global]->revealer->set_reveal_child(false);
key_global = "";
}
void Menu_os::html_last_launched_os(string name_os, Gtk::Label *label) {
string margin_name_os = "";
size_t index_find = this->str_last_launched_os.find(">");
size_t len_last_launched_os = this->str_last_launched_os.length();
if (index_find != string::npos) {
string level_1 = this->str_last_launched_os.substr(0, index_find + 1);
string level_3 = this->str_last_launched_os.substr(index_find + 1, len_last_launched_os - 1);
if (name_os == level_1) {
margin_name_os = "<b>" + name_os + "</b>";
label->set_markup(margin_name_os);
}
else if (name_os == level_3) {
margin_name_os = "<b>" + name_os + "</b>";
label->set_markup(margin_name_os);
}
else {
label->set_text(name_os);
}
}
else {
if (this->str_last_launched_os == name_os) {
margin_name_os = "<b>" + name_os + "</b>";
label->set_markup(margin_name_os);
}
else {
label->set_text(name_os);
}
}
}

@ -0,0 +1,67 @@
#ifndef Menu_os_H
#define Menu_os_H
#include <gtkmm.h>
#include <map>
#include <iostream>
#include <vector>
#include "util.h"
using namespace std;
class Menu_os
{
private:
Glib::RefPtr<Gtk::Builder> builder;
vector<tuple<string, vector<string>>> vec_list_os;
Gtk::Popover *popoverMenuOS;
Gtk::Revealer *revealerL1;
Gtk::Revealer *revealerL2;
Gtk::Button *btnToLev1;
string str_last_launched_os = "";
private:
string name_level_1 = "";
string name_level_3 = "";
string key_global = "";
Gtk::Entry *entry;
string path_glade = "";
Gtk::Box *boxALLL3;
Gtk::Box *boxLevel1;
struct struct_menu_level_3 {
Gtk::Button *btnToL3;
Gtk::Label *lblToL3;
Glib::RefPtr<Gtk::Builder> builder_level_3;
Glib::RefPtr<Gtk::StyleContext> btnToL3_css;
};
struct struct_menu_level1 {
Gtk::Label *lblRevL1;
Gtk::Button *btnToL2AndLv3;
Gtk::Revealer *revealer;
Gtk::Box *boxLevel3;
Gtk::Box *boxMenuLevel1;
string name;
Glib::RefPtr<Gtk::Builder> builder;
vector<struct struct_menu_level_3*> vec_menu_level_3;
Glib::RefPtr<Gtk::StyleContext> btnToL2AndLv3_css;
};
std::map<string, struct struct_menu_level1*> map_menu_level_1;
public:
Menu_os(/* args */);
void set_builder(Glib::RefPtr<Gtk::Builder>& builder, string path_glade);
void set_map(vector<tuple<string, vector<string>>> &vec_list_os);
void init();
void show();
void close_revealer();
void settings();
void html_last_launched_os(string name_os, Gtk::Label *label);
void set_last_launched_os(string str_last_launched_os);
void set_entry(Gtk::Entry *entry);
void event_template(Gtk::Label* label, string& name_level, string& key);
void event();
void to_l1();
~Menu_os();
};
#endif

File diff suppressed because it is too large Load Diff

@ -18,6 +18,7 @@
#include "load.h"
#include <dlfcn.h>
#include "ubl-settings-bootloader-cm.h"
#include "menu_os.h"
#ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h>
#endif
@ -40,7 +41,7 @@ void me_thread(string cmd);
#define website _("https://wiki.ublinux.com")
#define project_Home_page _("Project Home Page")
#define configuring_system_boot _("Configuring system boot parameters")
#define system_boot _("System boot")
#define system_boot _("System boot setup")
#define str_about _("About ubl-settings-bootloader")
#define command_line_parameters _("Command line parameters:")
#define load_default _("Load default:")
@ -67,7 +68,8 @@ void me_thread(string cmd);
#define boot_menu_user_password _("Boot menu user password:")
#define last_successful_upload _("Last successful upload")
#define read_documentation_web _("Would you like to read documentation in the Web?")
#define redirected_documentation _("You will be redirected to documentation site, where user help pages are ""translated and supported by community.")
#define redirected_documentation _("You will be redirected to documentation site, where user help pages are " \
"translated and supported by community.")
#define user_name_configuration_editing_code _("User name to enter boot configuration editing mode")
#define user_password_configuration_edit_mode _("User password to enter boot configuration edit mode")
#define loading_animation_with _("Loading animation with the magazine")
@ -91,11 +93,31 @@ void me_thread(string cmd);
#define program_as_root _("The program must be run as root")
#define str_active _("Active")
#define str_option _("Option")
#define str_title _("Title")
#define str_user _("User")
#define str_password _("Password")
#define str_administrator _("Administrator")
#define str_select _("Select")
#define str_melody_code _("Melody code")
#define str_ringtone_at_startup _("Ringtone at startup")
#define str_description _("Description")
#define str_help_h _("GTK settings bootloader for UBLinux\n""\n""Usage: ubl-settings-bootloader [OPTIONS...]\n""Options:\n"" -h, --help\t Show this help\n"" -V, --version\t Show package version\n"" --lock-help Lock utility help\n"" --lock-save Lock saving local and global configuration\n"" --lock-save-local Lock save global configuration\n"" --lock-save-global Lock load global configuration\n"" --lock-load-global Lock load global configuration\n")
#define str_title_Boot_Menu_Users _("Boot Menu Users")
#define str_title_Ringtone_Startup _("Ringtone at startup")
#define str_null_melody_name _("Enter the name and code of the tune in the \"Ringtone at startup\" field")
#define str_null_username _("Enter name and password code in the \"Boot Menu Users\" field")
#define str_help_h _("GTK settings bootloader for UBLinux\n" \
"\n" \
"Usage: ubl-settings-bootloader [OPTIONS...]\n" \
"Options:\n" \
" -h, --help\t Show this help\n" \
" -V, --version\t Show package version\n" \
" --lock-help Lock utility help\n" \
" --lock-save Lock saving local and global configuration\n" \
" --lock-save-local Lock save global configuration\n" \
" --lock-save-global Lock load global configuration\n" \
" --lock-load-global Lock load global configuration\n")
#define no_recognized _("Argument not recognized\n")
#define global_load "ubconfig --default --source global get boot"
#define system_load "ubconfig --default --source system get boot"
#define global_save "ubconfig --target global set boot "
@ -124,197 +146,256 @@ void me_thread(string cmd);
class CmdArgParser : public Glib::OptionGroup
{
public:
CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help);
CmdArgParser(const std::string &p_name, const std::string &p_description, const std::string &p_help);
::Window GetSocketID() const;
private:
int m_socketID = 0;
};
class MainWindow : public Gtk::ApplicationWindow {
class MainWindow : public Gtk::ApplicationWindow
{
public:
class ModelColumns : public Gtk::TreeModel::ColumnRecord
{
public:
ModelColumns()
{
add(check_button), add(name);
add(description);
}
// Gtk::TreeModelColumn<Gtk::CheckButton> check_button;
Gtk::TreeModelColumn<bool> check_button;
Gtk::TreeModelColumn<Glib::ustring> name;
Gtk::TreeModelColumn<Glib::ustring> description;
};
class ModelColumnsUser : public Gtk::TreeModel::ColumnRecord
{
public:
ModelColumnsUser()
{
add(check_button), add(name);
add(password);
}
// Gtk::TreeModelColumn<Gtk::CheckButton> check_button;
Gtk::TreeModelColumn<bool> check_button;
Gtk::TreeModelColumn<Glib::ustring> name;
Gtk::TreeModelColumn<Glib::ustring> password;
};
class ModelColumnsMelody : public Gtk::TreeModel::ColumnRecord
{
public:
class ModelColumns : public Gtk::TreeModel::ColumnRecord {
public:
ModelColumns() {add(check_button), add(name); add(description); }
//Gtk::TreeModelColumn<Gtk::CheckButton> check_button;
Gtk::TreeModelColumn<bool> check_button;
Gtk::TreeModelColumn<Glib::ustring> name;
Gtk::TreeModelColumn<Glib::ustring> description;
};
ModelColumns m_columns;
Glib::RefPtr<Gtk::Builder> builder;
Gtk::SpinButton *spbSecond;
Gtk::Label *lblInfoSeconds;
Gtk::Label *lblInfoDefaultDonw;
Gtk::Label *lblInfoCommand;
Gtk::Label *lblInfoCommand1;
Gtk::Label *lblHeaderAboutTopic;
Gtk::Label *lblInfoCommand2;
Gtk::Label *lblLoadMenu;
Gtk::Label *lblInfoInputTerminal;
Gtk::Label *lblInfoOutputTerminal;
Gtk::Label *lblHeaderName;
Gtk::Label *lblInfoHead;
Gtk::CheckButton *chbVgaText;
Gtk::CheckButton *chbLoadVariantSelectionTimer;
Gtk::Entry *entryKernel;
Gtk::Entry *entryIPT;
Gtk::Entry *entryOTT;
Gtk::Box *boxColor;
Gtk::AboutDialog *aboutWindows;
Gtk::MenuItem *btnAbout;
Gtk::MenuItem *btnSynopsis;
Gtk::MenuItem *btnSaveLocalGlob;
Gtk::MenuItem *btnSaveLocal;
Gtk::MenuItem *btnSaveGlob;
Gtk::MenuItem *btnLoadGlob;
Gtk::MenuItem *btnLoadLocal;
Gtk::Button *btnLoad;
Gtk::Button *btnSave;
Gtk::Button *btnSettings;
Gtk::Widget *boxButton;
Gtk::Widget *boxSave;
Gtk::Box *boxInfoError;
Gtk::Box *boxWidgetAll;
Gtk::Label *lblWarning;
Gtk::Image *imgInfo;
Gtk::ButtonBox *btnBoxAboutDialog;
Gtk::TreeView *treeViewKernel;
Gtk::TreeView *treeViewIPT;
Gtk::TreeView *treeViewOTT;
Gtk::Image *imgBG;
Gtk::Overlay *overHead;
Gtk::ComboBoxText *cmbDefaultDonw;
Gtk::ComboBoxText *cmbDownloadMode;
Gtk::CheckButton *chbSecurityLogin;
Gtk::CheckButton *chbPasswordProtecc;
Gtk::Entry *entrySecurityLogin;
Gtk::Entry *entryPasswordProtecc;
Gtk::Label *lblHeadeWndWeb;
ModelColumnsMelody()
{
add(check_button), add(title);
add(melody_code);
}
// Gtk::TreeModelColumn<Gtk::CheckButton> check_button;
Gtk::TreeModelColumn<bool> check_button;
Gtk::TreeModelColumn<Glib::ustring> title;
Gtk::TreeModelColumn<Glib::ustring> melody_code;
};
Gtk::Label *lblwebHeaderName;
Gtk::Label *lblhelpText;
Gtk::Label *lblhelpHeader;
Gtk::CheckButton *chkAlwaysOpenHelp;
Gtk::Button *btnReadHelp;
Gtk::Button *btnCancelHelp;
Gtk::Window *wndShowWeb;
ModelColumns m_columns;
ModelColumnsUser m_columns_user;
ModelColumnsMelody m_columns_melody;
Glib::RefPtr<Gtk::Builder> builder;
Gtk::SpinButton *spbSecond;
Gtk::Label *lblBootMenuUsers;
Gtk::Label *lblRingtoneStartup;
Gtk::Label *lblInfoSeconds;
Gtk::Label *lblInfoDefaultDonw;
Gtk::Label *lblInfoCommand;
Gtk::Label *lblInfoCommand1;
Gtk::Label *lblHeaderAboutTopic;
Gtk::Label *lblInfoCommand2;
Gtk::Label *lblLoadMenu;
Gtk::Label *lblInfoInputTerminal;
Gtk::Label *lblInfoOutputTerminal;
Gtk::Label *lblHeaderName;
Gtk::Label *lblInfoHead;
Gtk::Button *btnAddUser;
Gtk::Button *btnRemoveUser;
Gtk::Button *btnAddMusic;
Gtk::Button *btnRemoveMusic;
Gtk::CheckButton *chbVgaText;
Gtk::CheckButton *chbLoadVariantSelectionTimer;
Gtk::Entry *entryKernel;
Gtk::Entry *entryIPT;
Gtk::Entry *entryOTT;
Gtk::Box *boxColor;
Gtk::AboutDialog *aboutWindows;
Gtk::MenuItem *btnAbout;
Gtk::MenuItem *btnSynopsis;
Gtk::MenuItem *btnSaveLocalGlob;
Gtk::MenuItem *btnSaveLocal;
Gtk::MenuItem *btnSaveGlob;
Gtk::MenuItem *btnLoadGlob;
Gtk::MenuItem *btnLoadLocal;
Gtk::Button *btnLoad;
Gtk::Button *btnSave;
Gtk::Button *btnSettings;
Gtk::Widget *boxButton;
Gtk::Widget *boxSave;
Gtk::Box *boxInfoError;
Gtk::Box *boxWidgetAll;
Gtk::Label *lblWarning;
Gtk::Image *imgInfo;
Gtk::ButtonBox *btnBoxAboutDialog;
Gtk::TreeView *treeViewKernel;
Gtk::TreeView *treeViewIPT;
Gtk::TreeView *treeViewOTT;
Gtk::TreeView *treeViewUser;
Gtk::TreeView *treeViewMelody;
Gtk::Image *imgBG;
Gtk::Overlay *overHead;
Gtk::ComboBoxText *cmbDownloadMode;
Gtk::CheckButton *chbPasswordProtecc;
Gtk::Label *lblHeadeWndWeb;
std::vector<std::string> vec_Option_kernel;
std::vector<std::string> vec_Option_IPT;
std::vector<std::string> vec_Option_OTT;
Gtk::Label *lblwebHeaderName;
Gtk::Label *lblhelpText;
Gtk::Label *lblhelpHeader;
Gtk::CheckButton *chkAlwaysOpenHelp;
Gtk::Button *btnReadHelp;
Gtk::Button *btnCancelHelp;
Gtk::Window *wndShowWeb;
Gtk::Button *btnOpenMenuOS;
Gtk::Entry *entrListOS;
Glib::RefPtr<Gtk::ListStore> list_store_kernel;
Glib::RefPtr<Gtk::ListStore> list_store_IPT;
Glib::RefPtr<Gtk::ListStore> list_store_OTT;
#ifdef WEBKIT_FOUND
Gtk::Window *wndWeb;
Gtk::Widget *three;
WebKitWebView *one;
#endif
std::vector<std::string> vec_Option_kernel;
std::vector<std::string> vec_Option_IPT;
std::vector<std::string> vec_Option_OTT;
void set_entry_to_tree_view(Glib::RefPtr<Gtk::ListStore> &list_store, Gtk::Entry &entry, std::vector<std::string> &vec_Option, int size);
Gtk::TreeModel::Row row_kernel;
Gtk::TreeModel::Row row_IPT;
Gtk::TreeModel::Row row_OTT;
std::map <string, string> map_cmd_selection;
std::map <string, string> map_global_cmd_selection;
std::map <string, string> map_local_cmd_selection;
Glib::RefPtr<Gtk::ListStore> list_store_kernel;
Glib::RefPtr<Gtk::ListStore> list_store_IPT;
Glib::RefPtr<Gtk::ListStore> list_store_OTT;
Glib::RefPtr<Gtk::ListStore> list_store_user;
Glib::RefPtr<Gtk::ListStore> list_store_melody;
#ifdef WEBKIT_FOUND
Gtk::Window *wndWeb;
Gtk::Widget *three;
WebKitWebView *one;
#endif
Gtk::TreeModel::Row row_kernel;
Gtk::TreeModel::Row row_IPT;
Gtk::TreeModel::Row row_OTT;
Gtk::TreeModel::Row row_user;
Gtk::TreeModel::Row row_melody;
std::map<string, string> map_cmd_selection;
std::map<string, string> map_global_cmd_selection;
std::map<string, string> map_local_cmd_selection;
Gtk::TreeModel::iterator iter_user_del;
Gtk::TreeModel::iterator iter_melody_del;
bool flag_validate_del_user = false;
bool flag_validate_del_melody = false;
Gtk::Label *lblDownloadMode;
Lib_save::Save obj_save = Lib_save::Save();
Lib_Load::Load obj_load = Lib_Load::Load();
vector<string> vec_param_names;
My_Process::My_Process_system obj_process_system = My_Process::My_Process_system();
My_Process::My_Process_call obj_process_call = My_Process::My_Process_call();
bool flag_load = false;
bool flag_save_all = false;
bool flag_blocked_tree_view = false;
bool flag_save_block = false;
bool flag_open_browser = false;
string str_last_launched_os = "";
int index_error = 0;
size_t size_kernel = 0;
size_t size_IPT = 0;
size_t size_OTT = 0;
Glib::RefPtr<Gtk::StyleContext> boxInfo;
string str_cmd_error = "";
template<typename Type>
struct Result{
Type response;
int error;
};
std::map <string, string> map_cmd_error;
Gtk::Label *lblDownloadMode;
Lib_save::Save obj_save = Lib_save::Save();
Lib_Load::Load obj_load = Lib_Load::Load();
Menu_os obj_menu_os = Menu_os();
vector<string> vec_param_names;
My_Process::My_Process_system obj_process_system = My_Process::My_Process_system();
My_Process::My_Process_call obj_process_call = My_Process::My_Process_call();
bool flag_load = false;
bool flag_save_all = false;
bool flag_blocked_tree_view = false;
bool flag_save_block = false;
bool flag_open_browser = false;
string str_last_launched_os = "";
int index_error = 0;
string str_flag_load = "";
size_t size_kernel = 0;
size_t size_IPT = 0;
size_t size_OTT = 0;
Glib::RefPtr<Gtk::StyleContext> boxInfo;
string str_cmd_error = "";
template <typename Type>
struct Result {
Type response;
int error;
};
std::map<string, string> map_cmd_error;
MainWindow(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder);
MainWindow(Glib::RefPtr<Gtk::Builder> const& builder);
~MainWindow();
void open_browser();
void get_menu_boot(std::map <string, string> &map_temp);
void set_row_all(std::map <string, string> &map_cmd, Glib::RefPtr<Gtk::ListStore> &list_store, vector<string> &list_params, size_t size,string key);
void set_row(Glib::RefPtr<Gtk::ListStore> &list_store, int size, std::string name, bool flag_chbox);
void get_builder();
bool gui_exit(GdkEventAny*);
void init_dict(string flag_load);
void add_CSS();
void show_pass();
void localization();
void event();
void settings();
string pars_last_launched_os();
vector<string> pars_os(vector<string> &os_control_list);
void fn_event_intelMax1();
void write_list_entry_os(vector<string> &os_control_list);
void fn_event_intelMax4();
void synopsis_show();
void set_data_cfg();
void set_active_boot_second();
void get_download_mode(std::map <string, string> &map_temp);
void view_add_cell(Gtk::TreeModel::Row &row, Glib::RefPtr<Gtk::ListStore> list_store_m , std::array<std::vector<std::string>, 5> &arr_view, size_t index);
void wrapper_system(string cmd, string thread_str);
struct Result<string> wrapper_call(string cmd);
void log_mess_error(string &cmd);
void wrapper_save_all_cfg();
void wrapper_save_local_cfg();
void wrapper_save_global_cfg();
bool save_template(string cmd, string cmd_remove, string flag_save);
void view_add_colums(Gtk::TreeView &treeView);
vector<string> read_file_and_view(string file_name ,Gtk::TreeModel::Row &row, Glib::RefPtr<Gtk::ListStore> list_store_m);
void download_local_cfg();
void template_open_browser();
void download_globl_cfg();
void flag_block_gui();
void info_status_app(string stule);
bool check_save(string flag_save, string key_name);
void info_warning_error(int mess);
int check_root();
bool focus_out_txt_kernel(GdkEventFocus*);
bool focus_out_txt_IPT(GdkEventFocus*);
bool focus_out_txt_OTT(GdkEventFocus*);
void fill_in_view();
void set_security_login();
void get_security_login(std::map <string, string> &map_temp);
bool check_flag_save(string flag_save);
void set_download_mode();
void change_password_protecc();
bool focus_out_txt_login(GdkEventFocus*);
void change_security_login();
void get_default_load(std::map <string, string> &map_temp);
bool focus_out_txt_password(GdkEventFocus*);
void get_password_protec(std::map <string, string> &map_temp);
void set_password_protec();
void set_entry(Gtk::Entry* entry , std::map<string, string> &map_temp, string key);
void load_template(std::map<string, string>* map_temp, string cmd);
vector<string> get_setting_entry_all(string key, std::map <string, string>* map_temp);
void cmd_entry_all(Gtk::Entry &entry, string cmd_settings, string cmd_remove);
void item_selected_kernel(const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator&);
void item_selected_OTT(const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator&);
void item_selected_IPT(const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator&);
string template_item_selected(int size, Glib::RefPtr<Gtk::ListStore> &list_store);
MainWindow(BaseObjectType *obj, Glib::RefPtr<Gtk::Builder> const &builder);
MainWindow(Glib::RefPtr<Gtk::Builder> const &builder);
~MainWindow();
void open_browser();
void remove_line_user(const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator& iter);
void set_entry_to_tree_view(Glib::RefPtr<Gtk::ListStore> &list_store, Gtk::Entry &entry, std::vector<std::string> &vec_Option, int size, string key);
void get_menu_boot(std::map<string, string> &map_temp);
void set_row_all(std::map<string, string> &map_cmd, Glib::RefPtr<Gtk::ListStore> &list_store, vector<string> &list_params, size_t size, string key);
void set_row(Glib::RefPtr<Gtk::ListStore> &list_store, int size, std::string name, bool flag_chbox);
void get_builder();
bool gui_exit(GdkEventAny *);
void init_dict(string flag_load);
void add_CSS();
void show_pass();
void localization();
void event();
void remove_user();
void remove_melody();
void settings();
void validate_melody();
void remove_line_melody(const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator& iter);
void view_add_colums_user(Gtk::TreeView &treeView);
void view_add_colums_melody(Gtk::TreeView &treeView);
void set_bat_save(Gtk::Button *btnSave);
string pars_last_launched_os();
vector<string> pars_os(vector<string> &os_control_list);
void fn_event_intelMax1();
void fn_event_intelMax4();
void synopsis_show();
void set_data_cfg();
void set_data_csv_melody();
vector<tuple<string, vector<string>>> format_os_list(vector<string> &os_control_list);
void set_active_boot_second();
void get_download_mode(std::map<string, string> &map_temp);
void view_add_cell(Gtk::TreeModel::Row &row, Glib::RefPtr<Gtk::ListStore> list_store_m, std::array<std::vector<std::string>, 5> &arr_view, size_t index);
void wrapper_system(string cmd, string thread_str);
struct Result<string> wrapper_call(string cmd);
void log_mess_error(string &cmd);
void wrapper_save_all_cfg();
void wrapper_save_local_cfg();
void wrapper_save_global_cfg();
bool save_template(string cmd, string cmd_remove, string flag_save);
void view_add_colums(Gtk::TreeView &treeView);
vector<string> read_file_and_view(string file_name, Gtk::TreeModel::Row &row, Glib::RefPtr<Gtk::ListStore> list_store_m);
void download_local_cfg();
void set_tree_view_user();
void template_open_browser();
void download_globl_cfg();
void flag_block_gui();
void info_status_app(string stule);
bool check_save(string flag_save, string key_name);
void info_warning_error(int mess);
int check_root();
void focus_out_txt_kernel();
void focus_out_txt_IPT();
void focus_out_txt_OTT();
bool focus_in_txt_entry(GdkEventFocus*);
void fill_in_view();
bool focus_tree_view(GdkEventFocus *);
bool check_flag_save(string flag_save);
void set_download_mode();
void get_default_load(std::map<string, string> &map_temp);
void set_entry(Gtk::Entry *entry, std::map<string, string> &map_temp, string key);
void load_template(std::map<string, string> *map_temp, string cmd);
vector<string> get_setting_entry_all(string key, std::map<string, string> *map_temp);
void cmd_entry_all(Gtk::Entry &entry, string cmd_settings, string cmd_remove);
void item_selected_kernel(const Gtk::TreeModel::Path &, const Gtk::TreeModel::iterator &);
void item_selected_OTT(const Gtk::TreeModel::Path &, const Gtk::TreeModel::iterator &);
void item_selected_IPT(const Gtk::TreeModel::Path &, const Gtk::TreeModel::iterator &);
string template_item_selected(int size, Glib::RefPtr<Gtk::ListStore> &list_store, string key);
void set_add_data_melody(Gtk::TreeModel::Row &row, bool flag, string &name, string &code);
void set_init_data_melody(std::map<string, string> &map_temp);
void set_add_data_user(Gtk::TreeModel::Row &row, bool flag, string &name, string &password);
void set_init_data_user(std::map<string, string> &map_temp);
void set_init_data_superuser(std::map<string, string> &map_temp);
};
class SettingsPlug : public Gtk::Plug{
class SettingsPlug : public Gtk::Plug
{
public:
Gtk::Window *window;
SettingsPlug(::Window p_socketID, Glib::RefPtr<Gtk::Builder> builder);
@ -325,5 +406,3 @@ private:
};
void help();

@ -50,6 +50,23 @@ array<vector<string>, 5> read_csv(const string& filename) {
return array_vectors;
}
vector<tuple<string, string>> read_csv_melody(const string& filename) {
vector<tuple<string, string>> vec_music;
ifstream file(filename);
string line;
char delimiter = ',';
while (getline(file, line)) {
stringstream stream(line);
string name;
string code;
getline(stream, name, delimiter);
getline(stream, code, delimiter);
tuple<string, string> tuple_music(name, code);
vec_music.push_back(tuple_music);
}
return vec_music;
}
string call(string cmd) {
FILE *fp;
int status;
@ -104,66 +121,5 @@ std::vector<std::string> split(std::string text, char delim) {
}
return vec;
}
unsigned short read_uid_min_max(string filename, string search) {
std::string line;
int uid = 0;
string remove_tab = "\t";
string remove_space = " ";
std::ifstream in(filename); // окрываем файл для чтения
if (in.is_open()){
while (getline(in, line)){
try{
if (line.find(search) != string::npos && (line.find("SYS_"+search) == string::npos)) {
str_remove(line, search);
str_remove(line, remove_space);
str_remove(line, remove_tab);
uid = atoi(line.c_str());
}
}
catch (int x) {
if (search == "UID_MIN"){
uid = 1000;
}
else{
uid = 65534;
}
}
}
}
else{
if (search == "UID_MIN") {
uid = 1000;
}
else{
uid = 65534;
}
}
in.close();
return uid;
}
vector <string> pars_users() {
vector <string> vec_users;
unsigned short uid_min = read_uid_min_max("/etc/login.defs", "UID_MIN");
unsigned short uid_max =read_uid_min_max("/etc/login.defs", "UID_MAX");
while (true) {
errno = 0;
passwd* entry = getpwent();
if (!entry) {
if (errno) {
break;
}
break;
}
if ((entry->pw_uid >= uid_min && entry->pw_uid < uid_max) || entry->pw_uid == 0) {
vec_users.push_back(string(entry->pw_name));
}
}
endpwent();
return vec_users;
}
}

@ -1,6 +1,7 @@
#ifndef UTIL_H
#define UTIL_H
#include <stdio.h>
#include <tuple>
#include <iostream>
#include <sstream>
#include <fstream>
@ -22,6 +23,7 @@
#include <stdio.h>
#include <map>
#include <pwd.h>
#include <set>
using namespace std;
@ -43,9 +45,6 @@ vector<int> find_all(string &str_ntp, string substr);
void str_remove(std::string& source, std::string to_remove);
void str_replace_all(string &str_base, string str_find, string str_replace);
std::vector<std::string> split(std::string text, char delim);
unsigned short read_uid_min_max(string filename, string search);
vector <string> pars_users();
string read_passwd(string username);
int synopsis_show(string str_link);
vector<tuple<string, string>> read_csv_melody(const string& filename);
}
#endif

@ -1,11 +1,11 @@
[Desktop Entry]
Encoding=UTF-8
Name=ubl-settings-bootloader
Name[ru]=Настройка загрузчика
GenericName=Настройка загрузчика
GenericName[ru]=Настройка загрузчика
Name[ru]=Настройка загрузки системы
GenericName=Настройка загрузки системы
GenericName[ru]=Настройка загрузки системы
Comment=Bootloader setup application
Comment[ru]=Приложение для настройки загрузчика
Comment[ru]=Приложение для настройки параметров загрузки системы
Type=Application
Exec=pkexec ubl-settings-bootloader
Icon=com.ublinux.ubl-settings-bootloader

File diff suppressed because it is too large Load Diff

@ -17,6 +17,37 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Enter the name and code of the tune in the \"Ringtone at startup\" field"
msgstr ""
msgid "Enter name and password code in the \"Boot Menu Users\" field"
msgstr ""
msgid "Boot Menu Users"
msgstr ""
msgid "Title"
msgstr ""
msgid ""
msgstr ""
msgid "Password"
msgstr ""
msgid "Administrator"
msgstr ""
msgid "Select"
msgstr ""
msgid "Melody code"
msgstr ""
msgid "Ringtone at startup"
msgstr ""
#: source/ubl-settings-bootloader.h:53 source/ubl-settings-bootloader.h:52
#: source/ubl-settings-bootloader.cc:431 source/ubl-settings-bootloader.cc:301
msgid "About"
@ -369,7 +400,7 @@ msgstr ""
#: source/ubl-settings-bootloader.h:43 source/ubl-settings-bootloader.h:42
#: source/ubl-settings-bootloader.cc:419
msgid "System boot"
msgid "System boot setup"
msgstr ""
#: source/ubl-settings-bootloader.h:49 source/ubl-settings-bootloader.h:48

@ -24,7 +24,7 @@ msgstr "О программе"
#: source/ubl-settings-bootloader.h:44 source/ubl-settings-bootloader.h:43
msgid "About ubl-settings-bootloader"
msgstr "О программе Загрузка системы"
msgstr "О программе Настройка загрузки системы"
#: source/ubl-settings-bootloader.h:92 source/ubl-settings-bootloader.h:91
#: source/ubl-settings-bootloader.cc:337 source/ubl-settings-bootloader.cc:199
@ -37,7 +37,7 @@ msgstr "Всегда перенаправлять"
#: source/ubl-settings-bootloader.h:96 source/ubl-settings-bootloader.h:95
msgid "Argument not recognized\n"
msgstr ""
msgstr "Аргумент не распознан\n"
#: source/ubl-settings-bootloader.h:66 source/ubl-settings-bootloader.h:65
msgid "Boot menu user name:"
@ -349,6 +349,36 @@ msgstr "Прочитать онлайн"
msgid "Save"
msgstr "Сохранить"
msgid "Boot Menu Users"
msgstr "Пользователи меню загрузчика"
msgid "Title"
msgstr "Название"
msgid "User"
msgstr "Пользователь"
msgid "Enter the name and code of the tune in the \"Ringtone at startup\" field"
msgstr "Введите название и код мелодии в поле \"Мелодия при загрузке\""
msgid "Enter name and password code in the \"Boot Menu Users\" field"
msgstr "Введите имя и код пароль в поле \"Пользователи меню загрузчика\""
msgid "Password"
msgstr "Пароль"
msgid "Administrator"
msgstr "Администратор"
msgid "Select"
msgstr "Выбор"
msgid "Melody code"
msgstr "Код мелодии"
msgid "Ringtone at startup"
msgstr "Мелодия при загрузке"
#: source/ubl-settings-bootloader.h:58 source/ubl-settings-bootloader.h:57
#: source/ubl-settings-bootloader.cc:434 source/ubl-settings-bootloader.cc:304
msgid "Save in global configuration"
@ -389,8 +419,8 @@ msgstr "Успешно записаны локальная и глобальна
#: source/ubl-settings-bootloader.h:43 source/ubl-settings-bootloader.h:42
#: source/ubl-settings-bootloader.cc:419
msgid "System boot"
msgstr "Загрузка системы"
msgid "System boot setup"
msgstr "Настройка загрузки системы"
#: source/ubl-settings-bootloader.h:49 source/ubl-settings-bootloader.h:48
#: source/ubl-settings-bootloader.cc:427
@ -537,7 +567,7 @@ msgstr "splash (Показать окно приветствия)"
#: source/ubl-settings-bootloader.cc:439 source/ubl-settings-bootloader.cc:281
#: source/ubl-settings-bootloader.cc:286 source/ubl-settings-bootloader.cc:309
msgid "ubl-settings-bootloader"
msgstr "Загрузка системы"
msgstr "Настройка загрузки системы"
#: source/ubl-settings-bootloader.h:79 source/ubl-settings-bootloader.h:78
#: source/ubl-settings-bootloader.cc:947 source/ubl-settings-bootloader.cc:547

Loading…
Cancel
Save