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}/ cmdline-linux.csv
@install -Dm644 -t /usr/share/${PKGNAME}/ grub-terminal-input.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-terminal-output.csv
@install -Dm644 -t /usr/share/${PKGNAME}/ grub-melodylist.csv
@if [ -z ${DESTDIR} ]; then \ @if [ -z ${DESTDIR} ]; then \
[ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ [ -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; \ 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") -fstack-clash-protection -fcf-protection")
set(SOURCE_FILES set(SOURCE_FILES
menu_os.h
menu_os.cc
ubl-settings-bootloader-cm.h ubl-settings-bootloader-cm.h
ubl-settings-bootloader.h ubl-settings-bootloader.h
ubl-settings-bootloader.cc ubl-settings-bootloader.cc

@ -85,7 +85,7 @@ void pars_flag(int index_start, int argc, char* argv[]) {
} }
else{ else{
if (index_start == 1){ 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 "load.h"
#include <dlfcn.h> #include <dlfcn.h>
#include "ubl-settings-bootloader-cm.h" #include "ubl-settings-bootloader-cm.h"
#include "menu_os.h"
#ifdef WEBKIT_FOUND #ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h> #include <webkit2/webkit2.h>
#endif #endif
@ -40,7 +41,7 @@ void me_thread(string cmd);
#define website _("https://wiki.ublinux.com") #define website _("https://wiki.ublinux.com")
#define project_Home_page _("Project Home Page") #define project_Home_page _("Project Home Page")
#define configuring_system_boot _("Configuring system boot parameters") #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 str_about _("About ubl-settings-bootloader")
#define command_line_parameters _("Command line parameters:") #define command_line_parameters _("Command line parameters:")
#define load_default _("Load default:") #define load_default _("Load default:")
@ -67,7 +68,8 @@ void me_thread(string cmd);
#define boot_menu_user_password _("Boot menu user password:") #define boot_menu_user_password _("Boot menu user password:")
#define last_successful_upload _("Last successful upload") #define last_successful_upload _("Last successful upload")
#define read_documentation_web _("Would you like to read documentation in the Web?") #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_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 user_password_configuration_edit_mode _("User password to enter boot configuration edit mode")
#define loading_animation_with _("Loading animation with the magazine") #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 program_as_root _("The program must be run as root")
#define str_active _("Active") #define str_active _("Active")
#define str_option _("Option") #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_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 no_recognized _("Argument not recognized\n")
#define global_load "ubconfig --default --source global get boot" #define global_load "ubconfig --default --source global get boot"
#define system_load "ubconfig --default --source system get boot" #define system_load "ubconfig --default --source system get boot"
#define global_save "ubconfig --target global set boot " #define global_save "ubconfig --target global set boot "
@ -124,197 +146,256 @@ void me_thread(string cmd);
class CmdArgParser : public Glib::OptionGroup class CmdArgParser : public Glib::OptionGroup
{ {
public: 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; ::Window GetSocketID() const;
private: private:
int m_socketID = 0; 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: public:
class ModelColumns : public Gtk::TreeModel::ColumnRecord { ModelColumnsMelody()
public: {
ModelColumns() {add(check_button), add(name); add(description); } add(check_button), add(title);
//Gtk::TreeModelColumn<Gtk::CheckButton> check_button; add(melody_code);
Gtk::TreeModelColumn<bool> check_button; }
Gtk::TreeModelColumn<Glib::ustring> name; // Gtk::TreeModelColumn<Gtk::CheckButton> check_button;
Gtk::TreeModelColumn<Glib::ustring> description; Gtk::TreeModelColumn<bool> check_button;
}; Gtk::TreeModelColumn<Glib::ustring> title;
ModelColumns m_columns; Gtk::TreeModelColumn<Glib::ustring> melody_code;
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;
Gtk::Label *lblwebHeaderName; ModelColumns m_columns;
Gtk::Label *lblhelpText; ModelColumnsUser m_columns_user;
Gtk::Label *lblhelpHeader; ModelColumnsMelody m_columns_melody;
Gtk::CheckButton *chkAlwaysOpenHelp; Glib::RefPtr<Gtk::Builder> builder;
Gtk::Button *btnReadHelp; Gtk::SpinButton *spbSecond;
Gtk::Button *btnCancelHelp; Gtk::Label *lblBootMenuUsers;
Gtk::Window *wndShowWeb; 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; Gtk::Label *lblwebHeaderName;
std::vector<std::string> vec_Option_IPT; Gtk::Label *lblhelpText;
std::vector<std::string> vec_Option_OTT; 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; std::vector<std::string> vec_Option_kernel;
Glib::RefPtr<Gtk::ListStore> list_store_IPT; std::vector<std::string> vec_Option_IPT;
Glib::RefPtr<Gtk::ListStore> list_store_OTT; std::vector<std::string> vec_Option_OTT;
#ifdef WEBKIT_FOUND
Gtk::Window *wndWeb;
Gtk::Widget *three;
WebKitWebView *one;
#endif
void set_entry_to_tree_view(Glib::RefPtr<Gtk::ListStore> &list_store, Gtk::Entry &entry, std::vector<std::string> &vec_Option, int size); Glib::RefPtr<Gtk::ListStore> list_store_kernel;
Gtk::TreeModel::Row row_kernel; Glib::RefPtr<Gtk::ListStore> list_store_IPT;
Gtk::TreeModel::Row row_IPT; Glib::RefPtr<Gtk::ListStore> list_store_OTT;
Gtk::TreeModel::Row row_OTT; Glib::RefPtr<Gtk::ListStore> list_store_user;
std::map <string, string> map_cmd_selection; Glib::RefPtr<Gtk::ListStore> list_store_melody;
std::map <string, string> map_global_cmd_selection; #ifdef WEBKIT_FOUND
std::map <string, string> map_local_cmd_selection; 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; Gtk::Label *lblDownloadMode;
Lib_save::Save obj_save = Lib_save::Save(); Lib_save::Save obj_save = Lib_save::Save();
Lib_Load::Load obj_load = Lib_Load::Load(); Lib_Load::Load obj_load = Lib_Load::Load();
vector<string> vec_param_names; Menu_os obj_menu_os = Menu_os();
My_Process::My_Process_system obj_process_system = My_Process::My_Process_system(); vector<string> vec_param_names;
My_Process::My_Process_call obj_process_call = My_Process::My_Process_call(); My_Process::My_Process_system obj_process_system = My_Process::My_Process_system();
bool flag_load = false; My_Process::My_Process_call obj_process_call = My_Process::My_Process_call();
bool flag_save_all = false; bool flag_load = false;
bool flag_blocked_tree_view = false; bool flag_save_all = false;
bool flag_save_block = false; bool flag_blocked_tree_view = false;
bool flag_open_browser = false; bool flag_save_block = false;
string str_last_launched_os = ""; bool flag_open_browser = false;
int index_error = 0; string str_last_launched_os = "";
size_t size_kernel = 0; int index_error = 0;
size_t size_IPT = 0; string str_flag_load = "";
size_t size_OTT = 0; size_t size_kernel = 0;
Glib::RefPtr<Gtk::StyleContext> boxInfo; size_t size_IPT = 0;
string str_cmd_error = ""; size_t size_OTT = 0;
template<typename Type> Glib::RefPtr<Gtk::StyleContext> boxInfo;
struct Result{ string str_cmd_error = "";
Type response; template <typename Type>
int error; struct Result {
}; Type response;
std::map <string, string> map_cmd_error; int error;
};
std::map<string, string> map_cmd_error;
MainWindow(BaseObjectType* obj, Glib::RefPtr<Gtk::Builder> const& builder); MainWindow(BaseObjectType *obj, Glib::RefPtr<Gtk::Builder> const &builder);
MainWindow(Glib::RefPtr<Gtk::Builder> const& builder); MainWindow(Glib::RefPtr<Gtk::Builder> const &builder);
~MainWindow(); ~MainWindow();
void open_browser(); void open_browser();
void get_menu_boot(std::map <string, string> &map_temp); void remove_line_user(const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator& iter);
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_entry_to_tree_view(Glib::RefPtr<Gtk::ListStore> &list_store, Gtk::Entry &entry, std::vector<std::string> &vec_Option, int size, string key);
void set_row(Glib::RefPtr<Gtk::ListStore> &list_store, int size, std::string name, bool flag_chbox); void get_menu_boot(std::map<string, string> &map_temp);
void get_builder(); 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);
bool gui_exit(GdkEventAny*); void set_row(Glib::RefPtr<Gtk::ListStore> &list_store, int size, std::string name, bool flag_chbox);
void init_dict(string flag_load); void get_builder();
void add_CSS(); bool gui_exit(GdkEventAny *);
void show_pass(); void init_dict(string flag_load);
void localization(); void add_CSS();
void event(); void show_pass();
void settings(); void localization();
string pars_last_launched_os(); void event();
vector<string> pars_os(vector<string> &os_control_list); void remove_user();
void fn_event_intelMax1(); void remove_melody();
void write_list_entry_os(vector<string> &os_control_list); void settings();
void fn_event_intelMax4(); void validate_melody();
void synopsis_show(); void remove_line_melody(const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator& iter);
void set_data_cfg(); void view_add_colums_user(Gtk::TreeView &treeView);
void set_active_boot_second(); void view_add_colums_melody(Gtk::TreeView &treeView);
void get_download_mode(std::map <string, string> &map_temp); void set_bat_save(Gtk::Button *btnSave);
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); string pars_last_launched_os();
void wrapper_system(string cmd, string thread_str); vector<string> pars_os(vector<string> &os_control_list);
struct Result<string> wrapper_call(string cmd); void fn_event_intelMax1();
void log_mess_error(string &cmd); void fn_event_intelMax4();
void wrapper_save_all_cfg(); void synopsis_show();
void wrapper_save_local_cfg(); void set_data_cfg();
void wrapper_save_global_cfg(); void set_data_csv_melody();
bool save_template(string cmd, string cmd_remove, string flag_save); vector<tuple<string, vector<string>>> format_os_list(vector<string> &os_control_list);
void view_add_colums(Gtk::TreeView &treeView); void set_active_boot_second();
vector<string> read_file_and_view(string file_name ,Gtk::TreeModel::Row &row, Glib::RefPtr<Gtk::ListStore> list_store_m); void get_download_mode(std::map<string, string> &map_temp);
void download_local_cfg(); 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 template_open_browser(); void wrapper_system(string cmd, string thread_str);
void download_globl_cfg(); struct Result<string> wrapper_call(string cmd);
void flag_block_gui(); void log_mess_error(string &cmd);
void info_status_app(string stule); void wrapper_save_all_cfg();
bool check_save(string flag_save, string key_name); void wrapper_save_local_cfg();
void info_warning_error(int mess); void wrapper_save_global_cfg();
int check_root(); bool save_template(string cmd, string cmd_remove, string flag_save);
bool focus_out_txt_kernel(GdkEventFocus*); void view_add_colums(Gtk::TreeView &treeView);
bool focus_out_txt_IPT(GdkEventFocus*); vector<string> read_file_and_view(string file_name, Gtk::TreeModel::Row &row, Glib::RefPtr<Gtk::ListStore> list_store_m);
bool focus_out_txt_OTT(GdkEventFocus*); void download_local_cfg();
void fill_in_view(); void set_tree_view_user();
void set_security_login(); void template_open_browser();
void get_security_login(std::map <string, string> &map_temp); void download_globl_cfg();
bool check_flag_save(string flag_save); void flag_block_gui();
void set_download_mode(); void info_status_app(string stule);
void change_password_protecc(); bool check_save(string flag_save, string key_name);
bool focus_out_txt_login(GdkEventFocus*); void info_warning_error(int mess);
void change_security_login(); int check_root();
void get_default_load(std::map <string, string> &map_temp); void focus_out_txt_kernel();
bool focus_out_txt_password(GdkEventFocus*); void focus_out_txt_IPT();
void get_password_protec(std::map <string, string> &map_temp); void focus_out_txt_OTT();
void set_password_protec(); bool focus_in_txt_entry(GdkEventFocus*);
void set_entry(Gtk::Entry* entry , std::map<string, string> &map_temp, string key); void fill_in_view();
void load_template(std::map<string, string>* map_temp, string cmd); bool focus_tree_view(GdkEventFocus *);
vector<string> get_setting_entry_all(string key, std::map <string, string>* map_temp); bool check_flag_save(string flag_save);
void cmd_entry_all(Gtk::Entry &entry, string cmd_settings, string cmd_remove); void set_download_mode();
void item_selected_kernel(const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator&); void get_default_load(std::map<string, string> &map_temp);
void item_selected_OTT(const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator&); void set_entry(Gtk::Entry *entry, std::map<string, string> &map_temp, string key);
void item_selected_IPT(const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator&); void load_template(std::map<string, string> *map_temp, string cmd);
string template_item_selected(int size, Glib::RefPtr<Gtk::ListStore> &list_store); 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: public:
Gtk::Window *window; Gtk::Window *window;
SettingsPlug(::Window p_socketID, Glib::RefPtr<Gtk::Builder> builder); SettingsPlug(::Window p_socketID, Glib::RefPtr<Gtk::Builder> builder);
@ -325,5 +406,3 @@ private:
}; };
void help(); void help();

@ -50,6 +50,23 @@ array<vector<string>, 5> read_csv(const string& filename) {
return array_vectors; 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) { string call(string cmd) {
FILE *fp; FILE *fp;
int status; int status;
@ -104,66 +121,5 @@ std::vector<std::string> split(std::string text, char delim) {
} }
return vec; 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 #ifndef UTIL_H
#define UTIL_H #define UTIL_H
#include <stdio.h> #include <stdio.h>
#include <tuple>
#include <iostream> #include <iostream>
#include <sstream> #include <sstream>
#include <fstream> #include <fstream>
@ -22,6 +23,7 @@
#include <stdio.h> #include <stdio.h>
#include <map> #include <map>
#include <pwd.h> #include <pwd.h>
#include <set>
using namespace std; 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_remove(std::string& source, std::string to_remove);
void str_replace_all(string &str_base, string str_find, string str_replace); void str_replace_all(string &str_base, string str_find, string str_replace);
std::vector<std::string> split(std::string text, char delim); std::vector<std::string> split(std::string text, char delim);
unsigned short read_uid_min_max(string filename, string search); vector<tuple<string, string>> read_csv_melody(const string& filename);
vector <string> pars_users();
string read_passwd(string username);
int synopsis_show(string str_link);
} }
#endif #endif

@ -1,11 +1,11 @@
[Desktop Entry] [Desktop Entry]
Encoding=UTF-8 Encoding=UTF-8
Name=ubl-settings-bootloader Name=ubl-settings-bootloader
Name[ru]=Настройка загрузчика Name[ru]=Настройка загрузки системы
GenericName=Настройка загрузчика GenericName=Настройка загрузки системы
GenericName[ru]=Настройка загрузчика GenericName[ru]=Настройка загрузки системы
Comment=Bootloader setup application Comment=Bootloader setup application
Comment[ru]=Приложение для настройки загрузчика Comment[ru]=Приложение для настройки параметров загрузки системы
Type=Application Type=Application
Exec=pkexec ubl-settings-bootloader Exec=pkexec ubl-settings-bootloader
Icon=com.ublinux.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-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\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.h:53 source/ubl-settings-bootloader.h:52
#: source/ubl-settings-bootloader.cc:431 source/ubl-settings-bootloader.cc:301 #: source/ubl-settings-bootloader.cc:431 source/ubl-settings-bootloader.cc:301
msgid "About" msgid "About"
@ -369,7 +400,7 @@ msgstr ""
#: source/ubl-settings-bootloader.h:43 source/ubl-settings-bootloader.h:42 #: source/ubl-settings-bootloader.h:43 source/ubl-settings-bootloader.h:42
#: source/ubl-settings-bootloader.cc:419 #: source/ubl-settings-bootloader.cc:419
msgid "System boot" msgid "System boot setup"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:49 source/ubl-settings-bootloader.h:48 #: 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 #: source/ubl-settings-bootloader.h:44 source/ubl-settings-bootloader.h:43
msgid "About ubl-settings-bootloader" msgid "About ubl-settings-bootloader"
msgstr "О программе Загрузка системы" msgstr "О программе Настройка загрузки системы"
#: source/ubl-settings-bootloader.h:92 source/ubl-settings-bootloader.h:91 #: source/ubl-settings-bootloader.h:92 source/ubl-settings-bootloader.h:91
#: source/ubl-settings-bootloader.cc:337 source/ubl-settings-bootloader.cc:199 #: 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 #: source/ubl-settings-bootloader.h:96 source/ubl-settings-bootloader.h:95
msgid "Argument not recognized\n" msgid "Argument not recognized\n"
msgstr "" msgstr "Аргумент не распознан\n"
#: source/ubl-settings-bootloader.h:66 source/ubl-settings-bootloader.h:65 #: source/ubl-settings-bootloader.h:66 source/ubl-settings-bootloader.h:65
msgid "Boot menu user name:" msgid "Boot menu user name:"
@ -349,6 +349,36 @@ msgstr "Прочитать онлайн"
msgid "Save" msgid "Save"
msgstr "Сохранить" 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.h:58 source/ubl-settings-bootloader.h:57
#: source/ubl-settings-bootloader.cc:434 source/ubl-settings-bootloader.cc:304 #: source/ubl-settings-bootloader.cc:434 source/ubl-settings-bootloader.cc:304
msgid "Save in global configuration" 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.h:43 source/ubl-settings-bootloader.h:42
#: source/ubl-settings-bootloader.cc:419 #: source/ubl-settings-bootloader.cc:419
msgid "System boot" msgid "System boot setup"
msgstr "Загрузка системы" msgstr "Настройка загрузки системы"
#: source/ubl-settings-bootloader.h:49 source/ubl-settings-bootloader.h:48 #: source/ubl-settings-bootloader.h:49 source/ubl-settings-bootloader.h:48
#: source/ubl-settings-bootloader.cc:427 #: 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:439 source/ubl-settings-bootloader.cc:281
#: source/ubl-settings-bootloader.cc:286 source/ubl-settings-bootloader.cc:309 #: source/ubl-settings-bootloader.cc:286 source/ubl-settings-bootloader.cc:309
msgid "ubl-settings-bootloader" msgid "ubl-settings-bootloader"
msgstr "Загрузка системы" msgstr "Настройка загрузки системы"
#: source/ubl-settings-bootloader.h:79 source/ubl-settings-bootloader.h:78 #: source/ubl-settings-bootloader.h:79 source/ubl-settings-bootloader.h:78
#: source/ubl-settings-bootloader.cc:947 source/ubl-settings-bootloader.cc:547 #: source/ubl-settings-bootloader.cc:947 source/ubl-settings-bootloader.cc:547

Loading…
Cancel
Save