Merge pull request 'master' (#83) from YanTheKaller/ubl-settings-bootloader:master into master

Reviewed-on: #83
pull/91/head v2.13
Dmitry Razumov 12 months ago
commit 715e805af9

15
.gitignore vendored

@ -1,7 +1,12 @@
ubl-settings-bootloader.glade~ .vscode/
test.cpp
.vscode
ubl-settings-bootloader ubl-settings-bootloader
ubl-settings-bootloader_ru.po~ *~
terminal-commands/ build/
compile/ compile/
*#
terminal-commands/
source/ubl-cmake.h
vgcore*
.BUILD.md
.updatebuild.sh
.install.sh

@ -11,8 +11,8 @@ CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile
DEPENDS = /bin/cmake DEPENDS = /bin/cmake
PREFIX ?= /usr/local PREFIX ?= /usr/local
PKGNAME = $(MAKEFILE_DIR) PKGNAME = $(MAKEFILE_DIR)
FILE_VER = source/${PKGNAME}.cc FILE_VER = source/${PKGNAME}.h
PKGIDENT = $(subst /,-,$(subst /usr,,${PREFIX})) PKGIDENT=$(subst /,-,${PREFIX})
default_target: all default_target: all
@ -72,6 +72,7 @@ check:
build: depend prepare build: depend prepare
@echo "Build ..."; \ @echo "Build ..."; \
$(MAKE_COMMAND) --directory=${CMAKE_BUILD_DIR}; \ $(MAKE_COMMAND) --directory=${CMAKE_BUILD_DIR}; \
sed -r "s/^(string version_application).*/\1;/" -i ${FILE_VER}; \
echo "Build: OK" echo "Build: OK"
uninstall: uninstall:
@ -93,13 +94,7 @@ uninstall:
done done
@$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}"
@$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop"
@$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg"
@$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy" @$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy"
@$(RM) "${DESTDIR}/usr/share/${PKGNAME}/grub-cmdline-linux.csv"
@$(RM) "${DESTDIR}/usr/share/${PKGNAME}/grub-terminal-input.csv"
@$(RM) "${DESTDIR}/usr/share/${PKGNAME}/grub-terminal-output.csv"
@$(RM) "${DESTDIR}/usr/share/${PKGNAME}/grub-play.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; \
@ -121,23 +116,19 @@ install: check uninstall
install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \
rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \
done done
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg"
@cp ./com.ublinux.${PKGNAME}.policy ./compile/com.ublinux.${PKGNAME}${PKGIDENT}.policy @cp ./com.ublinux.${PKGNAME}.policy ./compile/com.ublinux.${PKGNAME}${PKGIDENT}.policy
@sed -e 's+/usr/bin+${PREFIX}/bin+' -e 's+.run+${PKGIDENT}.run+g' ./compile/com.ublinux.${PKGNAME}${PKGIDENT}.policy -i @sed -e 's+/usr/bin+${PREFIX}/bin+' -e 's+.run+${PKGIDENT}.run+g' ./compile/com.ublinux.${PKGNAME}${PKGIDENT}.policy -i
@install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg"
@install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg" @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/${PKGNAME}/" grub-cmdline-linux.csv @install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/com.ublinux.${PKGNAME}${PKGIDENT}.policy"
@install -Dm644 -t "${DESTDIR}/usr/share/${PKGNAME}/" grub-terminal-input.csv @ldconfig -n /usr/local/lib
@install -Dm644 -t "${DESTDIR}/usr/share/${PKGNAME}/" grub-terminal-output.csv
@install -Dm644 -t "${DESTDIR}/usr/share/${PKGNAME}/" grub-play.csv
@install -Dm644 "com.ublinux.${PKGNAME}.policy" "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy"
@sed -e '\|annotate key=|s|/usr/bin|${PREFIX}/bin|' -e '/action id=/s/\.run/${PKGIDENT}\.run/' -i ${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy
@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}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \
update-desktop-database --quiet &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \
[ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ [ -d "${DESTDIR}/usr/share/applications" ] && touch "${DESTDIR}/usr/share/applications" &>/dev/null || true; \
fi fi
@echo "Install: OK" @echo "Install: OK"
@ -147,7 +138,6 @@ clean:
@if [ -d ${CMAKE_BUILD_DIR} ]; then \ @if [ -d ${CMAKE_BUILD_DIR} ]; then \
echo "Clean: error, compile directory exist ${CMAKE_BUILD_DIR}"; \ echo "Clean: error, compile directory exist ${CMAKE_BUILD_DIR}"; \
else \ else \
sed -r "s/^(string version_application).*/\1;/" -i ${FILE_VER}; \
echo "Clean: OK"; \ echo "Clean: OK"; \
fi fi
@ -157,7 +147,7 @@ help:
echo "... init"; \ echo "... init"; \
echo "... debug"; \ echo "... debug"; \
echo "... prepare"; \ echo "... prepare"; \
echo "... build"; \ echo "... compile"; \
echo "... install"; \ echo "... install"; \
echo "... uninstall"; \ echo "... uninstall"; \
echo "... clean" echo "... clean"

@ -2,6 +2,11 @@
<gresources> <gresources>
<gresource prefix="/com/ublinux/ui"> <gresource prefix="/com/ublinux/ui">
<file>ubl-settings-bootloader.glade</file> <file>ubl-settings-bootloader.glade</file>
<file>ubl-settings-bootloader-password.glade</file>
<file>ubl-settings-bootloader-user.glade</file>
<file>ubl-settings-bootloader-ringtone.glade</file>
<file>ubl-settings-bootloader-menu.glade</file>
<file>ubl-settings-bootloader-menu-item.glade</file>
</gresource> </gresource>
<gresource prefix="/com/ublinux/css"> <gresource prefix="/com/ublinux/css">
<file>ubl-settings-bootloader.css</file> <file>ubl-settings-bootloader.css</file>
@ -9,4 +14,9 @@
<gresource prefix="/com/ublinux/images"> <gresource prefix="/com/ublinux/images">
<file>ubl-settings-bootloader-banner.png</file> <file>ubl-settings-bootloader-banner.png</file>
</gresource> </gresource>
<gresource prefix="/com/ublinux/csv">
<file>grub-parameters.csv</file>
<file>grub-terminal-input.csv</file>
<file>grub-terminal-output.csv</file>
</gresource>
</gresources> </gresources>

@ -1,2 +0,0 @@
Option|Tone code
ubbeep|480 900 2 1000 2 800 2 400 2 600 3
1 Option Tone code
2 ubbeep 480 900 2 1000 2 800 2 400 2 600 3

@ -3,20 +3,15 @@ project(ubl-settings-bootloader)
find_package(PkgConfig REQUIRED) find_package(PkgConfig REQUIRED)
pkg_check_modules(GTK3 REQUIRED gtk+-3.0) pkg_check_modules(GTK REQUIRED gtk+-3.0)
include_directories(${GTK3_INCLUDE_DIRS}) include_directories(${GTK_INCLUDE_DIRS})
link_directories(${GTK3_LIBRARY_DIRS}) link_directories(${GTK_LIBRARY_DIRS})
add_definitions(${GTK3_CFLAGS_OTHER}) add_definitions(${GTK_CFLAGS_OTHER})
pkg_check_modules(GTKMM30 REQUIRED gtkmm-3.0) pkg_check_modules(VTE291 REQUIRED vte-2.91)
include_directories(${GTKMM30_INCLUDE_DIRS}) include_directories(${VTE291_INCLUDE_DIRS})
link_directories(${GTKMM30_LIBRARY_DIRS}) link_directories(${VTE291_LIBRARY_DIRS})
add_definitions(${GTKMM30_CFLAGS_OTHER}) add_definitions(${VTE291_CFLAGS_OTHER})
#pkg_check_modules(VTE291 REQUIRED vte-2.91)
#include_directories(${VTE291_INCLUDE_DIRS})
#link_directories(${VTE291_LIBRARY_DIRS})
#add_definitions(${VTE291_CFLAGS_OTHER})
find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0) find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
@ -29,10 +24,6 @@ if(WEBKIT_LIBRARIES_FOUND)
add_definitions(${WEBKIT_CFLAGS_OTHER}) add_definitions(${WEBKIT_CFLAGS_OTHER})
endif() endif()
configure_file(ubl-cmake.in ubl-cmake.h)
file(COPY ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h DESTINATION ./)
set(GRESOURCE_C resources.c) set(GRESOURCE_C resources.c)
set(GRESOURCE_XML gresource.xml) set(GRESOURCE_XML gresource.xml)
@ -41,6 +32,14 @@ add_custom_target(GLADE ubl-settings-bootloader.glade)
set(DEPENDFILES set(DEPENDFILES
../ubl-settings-bootloader.glade ../ubl-settings-bootloader.glade
../ubl-settings-bootloader-password.glade
../ubl-settings-bootloader-user.glade
../ubl-settings-bootloader-ringtone.glade
../ubl-settings-bootloader-menu.glade
../ubl-settings-bootloader-menu-item.glade
../grub-parameters.csv
../grub-terminal-input.csv
../grub-terminal-output.csv
../gresource.xml ../gresource.xml
../ubl-settings-bootloader-banner.png ../ubl-settings-bootloader-banner.png
../ubl-settings-bootloader.css ../ubl-settings-bootloader.css
@ -66,7 +65,9 @@ add_custom_target(
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
) )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \ add_definitions(-DVTE_INCLUDE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always \
-O2 -pipe -fno-plt -fexceptions \ -O2 -pipe -fno-plt -fexceptions \
-Wformat -Werror=format-security \ -Wformat -Werror=format-security \
-fstack-clash-protection -fcf-protection") -fstack-clash-protection -fcf-protection")
@ -78,29 +79,24 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissin
endif() endif()
set(SOURCE_FILES set(SOURCE_FILES
menu_os.h ubl-settings-bootloader.c
menu_os.cc ubl-settings-bootloader-user.c
ubl-settings-bootloader-password.c
ubl-settings-bootloader-melody.c
ubl-settings-bootloader-menu.c
ubl-settings-bootloader.h ubl-settings-bootloader.h
ubl-settings-bootloader.cc ubl-strings.h
save.h )
save.cc
load.h
load.cc
my_process.h
my_process.cc
util.h
util.cc
ubl-util-standard.h
ubl-util-standard.c
main.cc
${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h)
set(LIBRARIES set(LIBRARIES
${GTK_LIBRARIES} ${GTK_LIBRARIES}
${GTKMM30_LIBRARIES}
${WEBKIT_LIBRARIES} ${WEBKIT_LIBRARIES}
# ${VTE291_LIBRARIES} ${UTILS_LIBRARIES}
pthread) ${VTE291_LIBRARIES}
pthread
ublsettings
ublsettings-gtk3
ublsettingsui-gtk3)
add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}) add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C})
@ -112,4 +108,3 @@ set_source_files_properties(
) )
install(TARGETS ${PROJECT_NAME} DESTINATION bin) install(TARGETS ${PROJECT_NAME} DESTINATION bin)
add_dependencies(${PROJECT_NAME} dummy-resource) add_dependencies(${PROJECT_NAME} dummy-resource)

@ -1,34 +0,0 @@
#include "load.h"
namespace Lib_Load{
void Load::set_count_error(int count_error) {
process.set_count_error(count_error);
}
string Load::get_cmd_error() {
return process.get_cmd_error();
}
map<string, string>& Load::get_load_data(std::map <string, string> &map_temp, string cmd) {
string response = "";
string key = "";
string value = "";
response = process.call_all_sections(cmd);
vector<string> vec_str_key_value = Utils::split(response, '\n');
for (const string &param: vec_str_key_value) {
if ((param.find("(null)") == std::string::npos) && (param.length() != 0 )) {
if (param.find("=") != std::string::npos) {
size_t index = param.find("=");
key = param.substr(0, index);
value = param.substr(index + 1, param.length());
Utils::str_replace_all(value, " \"","");
Utils::str_replace_all(value, "\"","");
map_temp[key] = value;
}
}
}
return map_temp;
}
int Load::get_count_error() {
return process.get_count_error();
}
}

@ -1,20 +0,0 @@
#ifndef LOAD_H
#define LOAD_H
#include "my_process.h"
namespace Lib_Load{
class Load {
private:
string sections;
My_Process::My_Process_call process = My_Process::My_Process_call();
public:
int get_count_error();
void set_count_error(int count_error);
string get_cmd_error();
map<string, string>& get_load_data(std::map <string, string> &map_temp, string str_flag_load);
};
}
#endif

@ -1,100 +0,0 @@
#include "ubl-settings-bootloader.h"
void pars_flag(int index_start, int argc, char* argv[]);
int main(int argc, char** argv) {
string str_argv= "";
string str_cmd_argv = "";
for (int i=1; i<argc; i++){
str_cmd_argv+= to_string(*argv[i]) + " ";
}
if (argc > 1){
str_argv = argv[1];
}
bindtextdomain("ubl-settings-bootloader", "/usr/share/locale/");
bind_textdomain_codeset("ubl-settings-bootloader", "UTF-8");
textdomain("ubl-settings-bootloader");
if (str_argv.find("--socket-id") != std::string::npos) {
auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example.plug");
auto builder = Gtk::Builder::create_from_resource(path_glade);
Glib::init();
setlocale(LC_ALL, "");
Glib::OptionContext context;
CmdArgParser parser{
"Socket ID",
"Command line argument for socket ID communication.",
"No help available, sorry"
};
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 if (str_argv.find("-") != std::string::npos || argc == 1) {
int len_argv = 1;
auto app = Gtk::Application::create(len_argv, argv, "org.gtkmm.example.plug");
auto builder = Gtk::Builder::create_from_resource(path_glade);
pars_flag(1, argc, argv);
MainWindow* wnd = nullptr;
builder->get_widget_derived("window", wnd);
GObject *window_obj = G_OBJECT(wnd->gobj());
Utils::yon_window_config_setup(GTK_WINDOW(window_obj));
Utils::yon_window_config_load(ui_config_path);
wnd->settings();
wnd->event();
wnd->set_menu_os_to_button();
auto r = app->run(*wnd);
delete wnd;
return r;
}
}
void pars_flag(int index_start, int argc, char* argv[]) {
string str_argv = "";
for (int i = index_start; i<argc; i++){
str_argv = argv[i];
if (str_argv == "--help" || str_argv == "-h"){
help();
exit(1);
}
else if (str_argv == "--version" || str_argv == "-v"){
string version = string(str_version) + version_application + "\n";
cout << version.c_str();
exit(1);
}
else if (str_argv == "--lock-help") {
flag_lock_help = true;
}
else if (str_argv == "--lock-save") {
flag_save = true;
flag_save_local = true;
flag_save_global = true;
}
else if (str_argv == "--lock-save-local"){
flag_save_local = true;
}
else if (str_argv == "--lock-save-global"){
flag_save_global = true;
}
else if (str_argv == "--lock-load-global"){
flag_load_global = true;
}
else{
if (index_start == 1){
g_print(no_recognized);
}
}
}
}

@ -1,185 +0,0 @@
#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("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_btnOpenMenuOS(Gtk::Button *btnOpenMenuOS) {
this->btnOpenMenuOS = btnOpenMenuOS;
}
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_resource(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;
if (vec_value.size() == 0) {
builder_level_1->get_widget("btnToL2AndLv3Image", map_menu_level_1[key]->btnToL2AndLv3Image);
map_menu_level_1[key]->btnToL2AndLv3Image->hide();
}
else {
builder_level_1->get_widget("btnToL2AndLv3Image", map_menu_level_1[key]->btnToL2AndLv3Image);
}
for (string& str_level_3: vec_value) {
auto builder_level_3 = Gtk::Builder::create_from_resource(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::set_main_revealer(Gtk::Revealer *revealer) {
this->main_revealer = revealer;
}
void Menu_os::show() {
revealerL1->set_reveal_child(true);
revealerL2->set_reveal_child(false);
this->close_revealer();
main_revealer->set_reveal_child(true);
}
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 = "";
}
else if (map_menu_level_1[key]->vec_menu_level_3.size() == 0) {
entry->set_text(name_level_1);
name_level_3 = "";
main_revealer->set_reveal_child(false);
}
else {
main_revealer->set_reveal_child(false);
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);
}
}
}

@ -1,71 +0,0 @@
#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::Revealer *revealerL1;
Gtk::Revealer *revealerL2;
Gtk::Button *btnToLev1;
Gtk::Revealer *main_revealer;
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;
Gtk::Button *btnOpenMenuOS;
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::MenuButton* btnToL2AndLv3Image;
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 set_main_revealer(Gtk::Revealer *revealer);
void set_btnOpenMenuOS(Gtk::Button *btnOpenMenuOS);
void to_l1();
~Menu_os();
};
#endif

@ -1,84 +0,0 @@
#include "my_process.h"
#include "util.h"
namespace My_Process {
#define debug false
struct Utils::Result<string> My_Process_call::call(string cmd) {
this->i_error_old = this->i_error;
struct Utils::Result<string> obj_result;
string response = Utils::call(cmd);
obj_result.response = response;
if ((response.find("(null)") == std::string::npos) && (response.length() != 0 )) {
if (response.find("=") != std::string::npos) {
if (response.find("\n") != std::string::npos) {
response = response.substr(response.find("=")+1,response.length());
response = response.substr(0,response.find("\n"));
obj_result.response = response;
obj_result.error = 0;
}
else {
obj_result.error = 1;
this->i_error += 1;
this->log_mess_error(cmd);
}
}
else {
obj_result.error = 2;
this->i_error += 1;
str_cmd_error = cmd;
this->log_mess_error(cmd);
}
}
else {
obj_result.error = 3;
this->i_error += 1;
str_cmd_error = cmd;
this->log_mess_error(cmd);
}
return obj_result;
}
int My_Process::get_count_error() {
return this->i_error;
}
void My_Process::set_back_count_error() {
this->i_error = this->i_error_old;
}
void My_Process_system::call(string cmd, string thread_str = "") {
string cmd_new = cmd + " " + thread_str;
int response_cmd = system(cmd_new.c_str());
if (response_cmd != 0) {
this->i_error += 1;
}
}
void My_Process::set_count_error(int count_error) {
this->i_error = count_error;
this->str_cmd_error = "";
}
void My_Process::log_mess_error(string) {
}
string My_Process::get_cmd_error() {
return this->str_cmd_error;
}
string My_Process_call::call_all_sections(string cmd) {
char buffer[PATH_MAX] = {0};
std::string result = "";
FILE* pipe = popen(cmd.c_str(), "r");
if (!pipe) throw std::runtime_error("popen() failed!");
try {
while (fgets(buffer, sizeof buffer, pipe) != NULL) {
result += buffer;
}
} catch (...) {
pclose(pipe);
throw;
}
pclose(pipe);
return result;
}
}

@ -1,32 +0,0 @@
#ifndef SAVE_H
#define SAVE_H
#include "util.h"
namespace My_Process{
class My_Process {
public:
int i_error = 0;
int i_error_old = 0;
string str_cmd_error = "";
int get_count_error();
void set_count_error(int count_error);
void set_back_count_error();
void log_mess_error(string);
string get_cmd_error();
};
class My_Process_call: public My_Process {
public:
struct Utils::Result<string> call(string cmd);
string call_all_sections(string cmd);
};
class My_Process_system: public My_Process {
public:
void call(string cmd, string thread_str);
};
}
#endif

@ -1,165 +0,0 @@
#include "save.h"
namespace Lib_save {
vector<string> Save::get_error() {
return this->vec_errors;
}
bool Save::get_state_save() {
return this->flag_no_save;
}
void Save::set_data_global(std::map <string, string> &map_global) {
this->map_global = &map_global;
}
void Save::set_data_local(std::map <string, string> &map_local) {
this->map_local = &map_local;
}
void Save::set_data_gui(std::map <string, string> &map_gui) {
this->map_gui = &map_gui;
}
bool Save::check_save(string flag_save, string key_name) {
std::map <string, string>:: iterator iter_map_data;
std::map <string, string>:: iterator iter_map_data_old;
std::map <string, string> *map_data_old=NULL;
if (flag_save == "system") {
map_data_old = map_local;
}
else if (flag_save == "global") {
map_data_old = map_global;
}
iter_map_data = (*map_gui).find(key_name);
iter_map_data_old = (*map_data_old).find(key_name);
if ((*map_local).find(key_name) != (*map_local).end() && (*map_global).find(key_name) != (*map_global).end()) {
if ((*map_local)[key_name] != (*map_global)[key_name]) {
return true;
}
}
if (iter_map_data_old == (*map_data_old).end() && iter_map_data != (*map_gui).end()) {
return true;
}
else if (iter_map_data->second != iter_map_data_old->second) {
return true;
}
else if (iter_map_data->second.length() == 0 && iter_map_data_old->second.length() == 0) {
return false;
}
else if (iter_map_data->second == iter_map_data_old->second) {
return false;
}
else {
return true;
}
return true;
}
bool Save::wrapper_check_save(string flag_save, string key_name) {
if (flag_save == "all") {
bool bool_flag_save = this->check_save("system", key_name);
if (bool_flag_save) {
return true;
}
return this->check_save("global", key_name);
}
else {
return this->check_save(flag_save, key_name);
}
}
int Save::get_count_error() {
return process.get_count_error();
}
string Save::get_cmd_error() {
return process.get_cmd_error();
}
void Save::set_count_error(int count_error) {
process.set_count_error(count_error);
}
void Save::set_vec_params(vector<string>& vec_param_names) {
this->vec_param_names = &vec_param_names;
}
void Save::save(string sections, string str_flag_save) {
string key = "";
string value = "";
string cmd = "";
string str_error = "";
this->flag_no_save = true;
for (const auto &key: *vec_param_names) {
if (map_gui->find(key) != map_gui->end()) {
value = (*map_gui)[key];
if (this->wrapper_check_save(str_flag_save, key)) {
if (value.length() != 0) {
cmd = "ubconfig --target " + str_flag_save + " set " + sections + " " +
key + "=\"" + value + "\"";
}
else if (value.length() == 0) {
cmd = "ubconfig --target " + str_flag_save + " remove " + sections + " " + key;
}
else {
cmd = "";
}
if (cmd.length() != 0) {
process.call(cmd, "");
this->flag_no_save = false;
str_error = process.get_cmd_error();
if (str_error.length() != 0) {
this->vec_errors.push_back(str_error);
str_error = "";
}
}
}
}
}
}
void Save::save_one_cmd(string cmd1, string cmd_remove, string str_flag_save) {
string key = "";
string value = "";
string cmd = "";
this->flag_no_save = true;
cmd = cmd1;
string remove = cmd_remove;
for (const auto &key: *vec_param_names) {
if (map_gui->find(key) != map_gui->end()) {
value = (*map_gui)[key];
if (this->wrapper_check_save(str_flag_save, key)) {
if (value.length() != 0) {
cmd = cmd + key + "=\"" + value + "\" ";
}
else if (value.length() == 0) {
remove = remove + key + " ";
}
}
}
}
if (cmd.length() != cmd1.length()) {
this->template_save(cmd);
}
if (cmd_remove.length() != remove.length()) {
this->template_save(remove);
}
}
void Save::template_save(string cmd) {
string str_error = "";
process.call(cmd, "");
this->flag_no_save = false;
str_error = process.get_cmd_error();
if (str_error.length() != 0) {
this->vec_errors.push_back(str_error);
str_error = "";
}
}
}

@ -1,33 +0,0 @@
#ifndef MY_PROCESS_H
#define MY_PROCESS_H
#include "my_process.h"
namespace Lib_save {
class Save {
private:
std::map <string, string> *map_global;
std::map <string, string> *map_local;
std::map <string, string> *map_gui;
vector<string> vec_errors;
vector<string>* vec_param_names;
My_Process::My_Process_system process = My_Process::My_Process_system();
bool flag_no_save;
void template_save(string cmd);
public:
void set_data_global(std::map <string, string> &map_global);
void set_data_local(std::map <string, string> &map_local);
void set_data_gui(std::map <string, string> &map_gui);
bool check_save(string flag_save, string key_name);
bool get_state_save();
bool wrapper_check_save(string flag_save, string key_name);
void save_one_cmd(string cmd1, string cmd_remove, string str_flag_save);
int get_count_error();
string get_cmd_error();
void set_count_error(int count_error);
void set_vec_params(vector<string>& vec_param_names);
void save(string sections, string str_flag_save) ;
vector<string> get_error();
};
}
#endif

@ -1 +0,0 @@
#cmakedefine WEBKIT_FOUND

@ -0,0 +1,115 @@
#include "ubl-settings-bootloader.h"
void on_ringtone_accept(GtkWidget *,dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
yon_ringtone_window *window = yon_dictionary_get_data(dict->first->next,yon_ringtone_window*);
const char *username = gtk_entry_get_text(GTK_ENTRY(window->NameEntry));
const char *password = gtk_entry_get_text(GTK_ENTRY(window->CodeEntry));
// if (yon_char_is_empty(username)){
// yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
// yon_ubl_status_highlight_incorrect(window->NameEntry);
// return;
// }
if (yon_char_is_empty(password)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->CodeEntry);
return;
}
if (!yon_char_is_empty(window->prev_name)&&strcmp(username,window->prev_name)){
yon_window_config_erase_instant_parameter(window->prev_name,"melodies");
char *config_melody = config(GRUB_PLAY_parameter);
if (!yon_char_is_empty(config_melody)&&!strcmp(config_melody,password)){
yon_config_remove_by_key(GRUB_PLAY_parameter);
}
}
yon_window_config_add_instant_parameter((char*)username,"melodies",(char*)password,YON_TYPE_STRING);
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->ChooseCheck))){
yon_config_register(GRUB_PLAY_parameter,GRUB_PLAY_command,(char*)password);
} else {
char *config_melody = config(GRUB_PLAY_parameter);
if (!yon_char_is_empty(config_melody)&&!strcmp(config_melody,password)){
yon_config_remove_by_key(GRUB_PLAY_parameter);
}
}
gtk_widget_destroy(window->Window);
yon_interface_update(widgets);
}
void on_ringtone_add_clicked(GtkWidget *,main_window *widgets){
yon_ringtone_window *window = yon_ringtone_window_new();
dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_ringtone_accept),dict);
gtk_widget_show(window->Window);
}
void on_ringtone_edit_clicked(GtkWidget *,main_window *widgets){
yon_ringtone_window *window = yon_ringtone_window_new();
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->BootRingtoneList);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->BootRingtoneTree)),&model,&iter)){
int is_chosen;
char *name, *code;
gtk_tree_model_get(model,&iter,0,&is_chosen,1,&name,2,&code,-1);
window->prev_name = yon_char_new(name);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->ChooseCheck),is_chosen);
gtk_entry_set_text(GTK_ENTRY(window->NameEntry),name);
gtk_entry_set_text(GTK_ENTRY(window->CodeEntry),code);
}
dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_ringtone_accept),dict);
gtk_widget_show(window->Window);
}
void on_ringtone_remove_clicked(GtkWidget *,main_window *widgets){
GtkTreeIter iter;
GtkTreeModel *model;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->BootRingtoneTree)),&model,&iter)){
char *name, *code;
gtk_tree_model_get(model,&iter,1,&name,2,&code,-1);
dialog_confirmation_data *data = new(dialog_confirmation_data);
data->data=NULL;
data->function=NULL;
data->action_text = RINGTONE_REMOVE_CONFIRM_LABEL(name);
if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){
char *config_code = config(GRUB_PLAY_parameter);
yon_window_config_erase_instant_parameter(name,"melodies");
if (!yon_char_is_empty(config_code)&&strcmp(code,config_code)){
yon_config_remove_by_key(GRUB_PLAY_parameter);
}
yon_interface_update(widgets);
}
}
}
yon_ringtone_window *yon_ringtone_window_new(){
yon_ringtone_window *window = new(yon_ringtone_window);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_ringtone);
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->TitleLabel = yon_gtk_builder_get_widget(builder,"TitleLabel");
window->ChooseCheck = yon_gtk_builder_get_widget(builder,"ChooseCheck");
window->NameEntry = yon_gtk_builder_get_widget(builder,"NameEntry");
window->CodeEntry = yon_gtk_builder_get_widget(builder,"CodeEntry");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->prev_name = NULL;
yon_on_entry_set_allowed_symbols(GTK_ENTRY(window->CodeEntry),"01234567890 ");
yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->NameEntry));
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
return window;
}

@ -0,0 +1,207 @@
#include "ubl-settings-bootloader.h"
void on_menu_chosen(GtkWidget *, yon_menu_item *item){
if (strcmp(item->target,DEFAULT_MENU_ITEM_LABEL)){
gtk_entry_set_text(GTK_ENTRY(item->widgets->OSDefaultEntry),item->target);
} else {
gtk_entry_set_text(GTK_ENTRY(item->widgets->OSDefaultEntry),DEFAULT_MENU_ITEM_LABEL);
}
GdkDisplay *display = gdk_display_get_default();
GdkSeat *seat = gdk_display_get_default_seat(display);
if (item->window->seat_grab)
gdk_seat_ungrab(seat);
else
gtk_grab_remove(item->window->MenuWindow);
gtk_widget_destroy(item->window->MenuWindow);
}
void on_submenu_open(GtkWidget *,yon_menu_item *item){
yon_menu_window *window = item->window;
dictionary *dact = NULL;
for_dictionaries(dact,item->children){
yon_menu_item *child = yon_dictionary_get_data(dact,yon_menu_item*);
gtk_widget_hide(child->NextIconButton);
gtk_list_box_insert(GTK_LIST_BOX(window->ChildrenListBox),child->MenuItemBox,-1);
g_signal_connect(G_OBJECT(child->MenuButton),"clicked",G_CALLBACK(on_menu_chosen),dact->data);
}
gtk_revealer_set_reveal_child(GTK_REVEALER(item->window->ItemsRevealer),0);
gtk_revealer_set_reveal_child(GTK_REVEALER(item->window->ChildrenRevealer),1);
gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->ChildrenRevealer)),window->ChildrenRevealer,1,1,0,GTK_PACK_START);
gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->ItemsRevealer)),window->ItemsRevealer,0,0,0,GTK_PACK_START);
yon_on_revealer_switched(window);
g_signal_connect(G_OBJECT(window->MenuWindow),"size-allocate",G_CALLBACK(on_menu_window_size_reallocated),window);
}
yon_menu_window *yon_menu_window_open(GtkWidget *, main_window *widgets){
yon_menu_window *window = yon_menu_window_new();
gtk_window_set_transient_for(GTK_WINDOW(window->MenuWindow),GTK_WINDOW(widgets->Window));
{
yon_menu_item *item = yon_menu_item_new();
item->widgets=widgets;
item->window=window;
item->children=NULL;
gtk_label_set_text(GTK_LABEL(item->MenuTextLabel),DEFAULT_MENU_ITEM_LABEL);
item->target=yon_char_new(DEFAULT_MENU_ITEM_LABEL);
gtk_list_box_insert(GTK_LIST_BOX(window->ItemsListBox),item->MenuItemBox,-1);
yon_dictionary_add_or_create_if_exists_with_data(window->menu_items,DEFAULT_MENU_ITEM_LABEL,item);
gtk_widget_show(item->MenuItemBox);
gtk_widget_hide(item->NextIconButton);
g_signal_connect(G_OBJECT(item->MenuButton),"clicked",G_CALLBACK(on_menu_chosen),item);
}
int size;
config_str parsed = yon_config_load(get_menus_entry_command,&size);
for (int i=0;i<size;i++){
yon_char_remove_last_symbol(parsed[i],'\n');
int param_size;
config_str parameter = yon_char_parse(parsed[i],&param_size,">");
dictionary * cur_item = NULL;
if (param_size==2&&(cur_item=yon_dictionary_get(&window->menu_items,parameter[0]))){
yon_menu_item *item = (yon_menu_item*)cur_item->data;
yon_menu_item *item_child = yon_menu_item_new();
gtk_widget_hide(item_child->NextIconButton);
gtk_label_set_text(GTK_LABEL(item_child->MenuTextLabel),parameter[1]);
item_child->target=yon_char_new(parameter[1]);
gtk_widget_show(item_child->MenuItemBox);
yon_dictionary_add_or_create_if_exists_with_data(item->children,parameter[1],item_child);
item_child->widgets=widgets;
item_child->window=window;
} else {
yon_menu_item *item = yon_menu_item_new();
item->widgets=widgets;
item->window=window;
gtk_label_set_text(GTK_LABEL(item->MenuTextLabel),parameter[0]);
item->target=yon_char_new(parameter[0]);
gtk_list_box_insert(GTK_LIST_BOX(window->ItemsListBox),item->MenuItemBox,-1);
yon_dictionary_add_or_create_if_exists_with_data(window->menu_items,parameter[0],item);
gtk_widget_show(item->MenuItemBox);
if (param_size==2){
yon_menu_item *item_child = yon_menu_item_new();
gtk_widget_show(item->NextIconButton);
gtk_widget_hide(item_child->NextIconButton);
gtk_label_set_text(GTK_LABEL(item_child->MenuTextLabel),parameter[1]);
item_child->target=yon_char_new(parameter[1]);
gtk_widget_show(item_child->MenuItemBox);
item_child->widgets=widgets;
item_child->window=window;
g_signal_connect(G_OBJECT(item->MenuButton),"clicked",G_CALLBACK(on_submenu_open),item);
yon_dictionary_add_or_create_if_exists_with_data(item->children,parameter[1],item_child);
} else {
gtk_widget_hide(item->NextIconButton);
g_signal_connect(G_OBJECT(item->MenuButton),"clicked",G_CALLBACK(on_menu_chosen),item);
}
}
}
int x,y,width;
gdk_window_get_position(gtk_widget_get_window(widgets->MenuButton),&x,&y);
gtk_widget_translate_coordinates(widgets->MenuButton,widgets->Window,x,y,&window->button_pos_x,&window->button_pos_y);
gtk_window_get_size(GTK_WINDOW(window->MenuWindow),&width,NULL);
gtk_window_get_position(GTK_WINDOW(widgets->Window),&x,&y);
gtk_window_move(GTK_WINDOW(window->MenuWindow),x+window->button_pos_x-width,y+window->button_pos_y);
gtk_widget_realize(window->MenuWindow);
gtk_widget_show(window->MenuWindow);
GdkGrabStatus status = gdk_seat_grab(gdk_display_get_default_seat(gdk_display_get_default()),gtk_widget_get_window(window->MenuWindow),GDK_SEAT_CAPABILITY_POINTER,TRUE,NULL,NULL,NULL,NULL);
if (status != GDK_GRAB_SUCCESS) {
window->seat_grab=0;
gtk_grab_add(window->MenuWindow);
} else {
window->seat_grab=1;
}
return window;
}
gboolean on_menu_clicked(GtkWidget *, GdkEventButton *event, yon_menu_window *window){
int x,y,width,height;
gtk_window_get_size(GTK_WINDOW(window->MenuWindow),&width,&height);
gtk_window_get_position(GTK_WINDOW(window->MenuWindow),&x,&y);
if (event->x_root<x||event->y_root<y||event->x_root>x+width||event->y_root>y+height){
GdkDisplay *display = gdk_display_get_default();
GdkSeat *seat = gdk_display_get_default_seat(display);
if (window->seat_grab)
gdk_seat_ungrab(seat);
else
gtk_grab_remove(window->MenuWindow);
gtk_widget_destroy(window->MenuWindow);
}
return 1;
}
gboolean yon_on_revealer_switched (yon_menu_window *window){
if (gtk_revealer_get_reveal_child(GTK_REVEALER(window->ItemsRevealer))){
gtk_widget_hide(window->ChildrenRevealer);
gtk_widget_show(window->ItemsRevealer);
} else {
gtk_widget_hide(window->ItemsRevealer);
gtk_widget_show(window->ChildrenRevealer);
}
return G_SOURCE_REMOVE;
}
void on_children_clean(GtkWidget*, yon_menu_window *window){
GList *list = gtk_container_get_children(GTK_CONTAINER(window->ChildrenListBox));
list = g_list_last(list);
for (guint i=0;i<g_list_length(list);i++){
GList *item = gtk_container_get_children(GTK_CONTAINER(list->data));
g_object_ref(G_OBJECT(item->data));
gtk_container_remove(GTK_CONTAINER(list->data),GTK_WIDGET(item->data));
gtk_widget_destroy(GTK_WIDGET(list->data));
g_list_free(item);
list=list->prev;
}
gtk_revealer_set_reveal_child(GTK_REVEALER(window->ItemsRevealer),1);
gtk_revealer_set_reveal_child(GTK_REVEALER(window->ChildrenRevealer),0);
gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->ItemsRevealer)),window->ItemsRevealer,1,1,0,GTK_PACK_START);
yon_on_revealer_switched(window);
g_signal_connect(G_OBJECT(window->MenuWindow),"size-allocate",G_CALLBACK(on_menu_window_size_reallocated),window);
gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->ChildrenRevealer)),window->ChildrenRevealer,0,0,0,GTK_PACK_START);
}
void on_menu_window_size_reallocated(GtkWidget *self,GtkAllocation *,yon_menu_window *window){
int x,y,width;
gtk_window_get_size(GTK_WINDOW(window->MenuWindow),&width,NULL);
gtk_window_get_position(GTK_WINDOW(gtk_window_get_transient_for(GTK_WINDOW(window->MenuWindow))),&x,&y);
gtk_window_move(GTK_WINDOW(window->MenuWindow),x+window->button_pos_x-width,y+window->button_pos_y);
g_signal_handlers_disconnect_by_func(self,on_menu_window_size_reallocated,window);
}
yon_menu_window *yon_menu_window_new(){
yon_menu_window *window = new(yon_menu_window);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_menu_window);
window->MenuWindow = yon_gtk_builder_get_widget(builder,"MainWindow");
window->ItemsRevealer = yon_gtk_builder_get_widget(builder,"ItemsRevealer");
window->BackButton = yon_gtk_builder_get_widget(builder,"BackButton");
window->ItemsListBox = yon_gtk_builder_get_widget(builder,"ItemsListBox");
window->ChildrenRevealer = yon_gtk_builder_get_widget(builder,"ChildrenRevealer");
window->ChildrenListBox = yon_gtk_builder_get_widget(builder,"ChildrenListBox");
window->menu_items=NULL;
g_signal_connect(G_OBJECT(window->BackButton),"clicked",G_CALLBACK(on_children_clean),window);
g_signal_connect(G_OBJECT(window->MenuWindow),"button-press-event",G_CALLBACK(on_menu_clicked),window);
return window;
}
yon_menu_item *yon_menu_item_new(){
yon_menu_item *item = new(yon_menu_item);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_menu_item);
item->MenuItemBox = yon_gtk_builder_get_widget(builder,"MenuItemBox");
item->MenuButton = yon_gtk_builder_get_widget(builder,"MenuButton");
item->MenuTextLabel = yon_gtk_builder_get_widget(builder,"MenuTextLabel");
item->NextIconButton = yon_gtk_builder_get_widget(builder,"NextIconButton");
item->children=NULL;
return item;
}

@ -0,0 +1,122 @@
#include "ubl-settings-bootloader.h"
void yon_password_change(GtkWidget *, GtkEntry *entry){
GtkEntry *output_target = entry;
yon_password_window *window = yon_ubl_settings_usergroups_password_new();
dictionary *dict = NULL;
char *password = (char*)gtk_entry_get_text(output_target);
if (!yon_char_is_empty(password)){
if (main_config.load_mode==0){
password = yon_char_new(password);
if (!check_is_password_hash(password)){
gtk_entry_set_text(GTK_ENTRY(window->PasswordHashEntry),password);
} else {
if (password[0]=='%'&&password[1]=='%'){
free(yon_char_divide(password,1));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->NoEncriptionCheck),1);
}
gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password);
}
}
}
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
yon_dictionary_add_or_create_if_exists_with_data(dict,"target",output_target);
g_signal_connect(G_OBJECT(window->UserOkButton),"clicked",G_CALLBACK(on_password_accept),dict);
g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
gtk_window_set_transient_for(GTK_WINDOW(window->Window),GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(output_target))));
gtk_widget_show(window->Window);
}
void on_password_accept(GtkWidget *self, dictionary *dict){
yon_password_window *window = yon_dictionary_get_data(dict->first,yon_password_window*);
GtkEntry *entry = yon_dictionary_get_data(dict->first->next,GtkEntry*);
char *password = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->NoEncriptionCheck))){
char *pasted_hash = (char*)gtk_entry_get_text(GTK_ENTRY(window->PasswordHashEntry));
if (yon_char_is_empty(pasted_hash)){
yon_ubl_status_highlight_incorrect(window->PasswordEntry);
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_SHORT_LABEL(yon_char_from_int(main_config.password_min_length)),5,BACKGROUND_IMAGE_FAIL_TYPE);
return;
}
gtk_entry_set_text(entry,pasted_hash);
} else {
char *password_check = (char*)gtk_entry_get_text(GTK_ENTRY(window->RepeatPasswordEntry));
if (yon_char_is_empty(password)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->PasswordEntry);
return;
}
for (size_t i=0;i<strlen(password);i++){
if (password[i]=='!'||password[i]=='@'||password[i]=='#'||password[i]=='%'||password[i]=='^'||password[i]=='&'||password[i]=='*'||password[i]=='\"'||password[i]=='\''){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),RESTRICTED_SYMBOLS_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
return;
}
}
if ((glong)strlen(password)<main_config.password_min_length){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_SHORT_LABEL(yon_char_from_int(main_config.password_min_length)),5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->PasswordEntry);
return;
}
if (strcmp(password,password_check)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),PASSWORD_MISMATCH_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->PasswordEntry);
yon_ubl_status_highlight_incorrect(window->RepeatPasswordEntry);
return;
}
gtk_entry_set_text(GTK_ENTRY(entry),password);
}
on_subwindow_close(self);
}
yon_password_window *yon_ubl_settings_usergroups_password_new(){
yon_password_window *window = malloc(sizeof(yon_password_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_password);
window->Window=yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox=yon_gtk_builder_get_widget(builder,"StatusBox");
window->TitleLabel=yon_gtk_builder_get_widget(builder,"userTitleNameLabel");
window->PasswordEntry=yon_gtk_builder_get_widget(builder,"PasswordEntry");
window->RepeatPasswordEntry=yon_gtk_builder_get_widget(builder,"RepeatPasswordEntry");
window->PasswordHashEntry=yon_gtk_builder_get_widget(builder,"PasswordHashEntry");
window->HashBox=yon_gtk_builder_get_widget(builder,"HashBox");
window->PasswordBox=yon_gtk_builder_get_widget(builder,"PasswordBox");
window->NoEncriptionCheck=yon_gtk_builder_get_widget(builder,"NoEncriptionCheck");
window->UserCancelButton=yon_gtk_builder_get_widget(builder,"UserCancelButton");
window->UserOkButton=yon_gtk_builder_get_widget(builder,"UserOkButton");
yon_window_config_custom_window_setup(GTK_WINDOW(window->Window),"PasswordWindow");
g_signal_connect(G_OBJECT(window->UserCancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->NoEncriptionCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),window->PasswordHashEntry);
g_signal_connect(G_OBJECT(window->NoEncriptionCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button_inversed),window->PasswordBox);
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->PasswordEntry));
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->RepeatPasswordEntry));
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->PasswordHashEntry));
gtk_window_set_title(GTK_WINDOW(window->Window),PASSWORD_TITLE_LABEL);
return window;
}
int yon_check_password_blocked(char *password){
if (!yon_char_is_empty(password)){
if (!strcmp(password,"!*")){
memset(password,0,strlen(password));
return 1;
} else if (password[0]=='!'&&password[1]=='*'){
char *copy = yon_char_new(password);
memcpy(copy,password+2,strlen(password+2));
memset(password,0,strlen(password));
memcpy(password,copy,strlen(copy));
free(copy);
return 1;
} else if (password[0]=='!'||password[0]=='*'){
free(yon_char_divide(password,0));
return 1;
}
}
return 0;
}

@ -0,0 +1,124 @@
#include "ubl-settings-bootloader.h"
void on_user_accept(GtkWidget *,dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
yon_user_window *window = yon_dictionary_get_data(dict->first->next,yon_user_window*);
const char *username = gtk_entry_get_text(GTK_ENTRY(window->UsernameEntry));
const char *password = gtk_entry_get_text(GTK_ENTRY(window->PasswordEntry));
if (yon_char_is_empty(username)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->UsernameEntry);
return;
}
if (yon_char_is_empty(password)){
yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE);
yon_ubl_status_highlight_incorrect(window->PasswordEntry);
return;
}
if (!yon_char_is_empty(window->prev_name)&&strcmp(username,window->prev_name)){
yon_config_remove_by_key(GRUB_PASSWORD(window->prev_name));
int size;
char *superusers = config(GRUB_SUPERUSERS_parameter);
config_str parsed = yon_char_parse(superusers,&size,",");
int pos = yon_char_parsed_check_exist(parsed,size,(char*)username);
if (pos>-1){
parsed = yon_char_parsed_rip(parsed,&size,pos);
char *superusers = yon_char_parsed_to_string(parsed,size,",");
if (!yon_char_is_empty(superusers)){
yon_config_register(GRUB_SUPERUSERS_parameter,GRUB_SUPERUSERS_command,superusers);
} else {
yon_config_remove_by_key(GRUB_SUPERUSERS_parameter);
}
}
}
yon_config_register(GRUB_PASSWORD(username),GRUB_PASSWORD_command,(char*)password);
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->AdminCheck))){
int size;
char *superusers = config(GRUB_SUPERUSERS_parameter);
config_str parsed = yon_char_parse(superusers,&size,",");
if (yon_char_parsed_check_exist(parsed,size,(char*)username)==-1){
yon_char_parsed_add_or_create_if_exists(parsed,&size,(char*)username);
char *superusers = yon_char_parsed_to_string(parsed,size,",");
yon_config_register(GRUB_SUPERUSERS_parameter,GRUB_SUPERUSERS_command,superusers);
}
}
gtk_widget_destroy(window->Window);
yon_interface_update(widgets);
}
void on_user_add_clicked(GtkWidget *,main_window *widgets){
yon_user_window *window = yon_user_window_new();
dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_user_accept),dict);
gtk_widget_show(window->Window);
}
void on_user_edit_clicked(GtkWidget *,main_window *widgets){
yon_user_window *window = yon_user_window_new();
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->BootUsersList);
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->BootUsersTree)),&model,&iter)){
int is_admin;
char *name;
gtk_tree_model_get(model,&iter,0,&is_admin,1,&name,-1);
window->prev_name = yon_char_new(name);
char *password = config(GRUB_PASSWORD(name));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(window->AdminCheck),is_admin);
gtk_entry_set_text(GTK_ENTRY(window->UsernameEntry),name);
if (password){
gtk_entry_set_text(GTK_ENTRY(window->PasswordEntry),password);
}
}
dictionary *dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets);
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_user_accept),dict);
gtk_widget_show(window->Window);
}
void on_user_remove_clicked(GtkWidget *,main_window *widgets){
GtkTreeIter iter;
GtkTreeModel *model;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->BootUsersTree)),&model,&iter)){
char *name;
gtk_tree_model_get(model,&iter,1,&name,-1);
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text = USER_REMOVE_CONFIRM_LABEL(name);
if (yon_confirmation_dialog_call(widgets->Window,data)==GTK_RESPONSE_ACCEPT){
yon_config_remove_by_key(GRUB_PASSWORD(name));
yon_interface_update(widgets);
}
}
}
yon_user_window *yon_user_window_new(){
yon_user_window *window = new(yon_user_window);
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_user);
window->Window = yon_gtk_builder_get_widget(builder,"MainWindow");
window->StatusBox = yon_gtk_builder_get_widget(builder,"StatusBox");
window->TitleLabel = yon_gtk_builder_get_widget(builder,"TitleLabel");
window->AdminCheck = yon_gtk_builder_get_widget(builder,"AdminCheck");
window->UsernameEntry = yon_gtk_builder_get_widget(builder,"UsernameEntry");
window->PasswordEntry = yon_gtk_builder_get_widget(builder,"PasswordEntry");
window->PasswordButton = yon_gtk_builder_get_widget(builder,"PasswordButton");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton");
window->prev_name = NULL;
g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
g_signal_connect(G_OBJECT(window->PasswordButton),"clicked",G_CALLBACK(yon_password_change),window->PasswordEntry);
yon_gtk_entry_set_password_visibility_icon(GTK_ENTRY(window->PasswordEntry));
yon_gtk_entry_block_restricted_symbols(GTK_ENTRY(window->UsernameEntry));
return window;
}

@ -0,0 +1,598 @@
#include "ubl-settings-bootloader.h"
config main_config;
//functions
void on_save_done(main_window *, config_str output, int size){
char *final_output = yon_char_parsed_to_string(output,size,"");
if (final_output){
printf("%s\n",final_output);
free(final_output);
}
yon_char_parsed_free(output,size);
textdomain(template_ui_LocaleName);
switch (main_config.save_config){
case 0:
yon_ubl_status_box_render(yon_char_get_localised_from_lib(GLOBAL_SAVE_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
break;
case 1:
yon_ubl_status_box_render(yon_char_get_localised_from_lib(LOCAL_SAVE_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
break;
case 3:
yon_ubl_status_box_render(yon_char_get_localised_from_lib(GLOBAL_LOCAL_SAVE_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
break;
}
textdomain(LocaleName);
}
void yon_save_window_hide_passwords(template_saving_window *window){
GtkTreeIter iter;
for_iter(GTK_TREE_MODEL(window->list),&iter){
char *target, *old_val, *new_val;
gtk_tree_model_get(GTK_TREE_MODEL(window->list),&iter,YON_SAVE_PARAMETER,&target,YON_SAVE_OLD,&old_val,YON_SAVE_NEW,&new_val,-1);
if (strstr(target,GRUB_PASSWORD_search)){
if (!yon_char_is_empty(old_val)) old_val="<s>******</s>"; else old_val="";
if (!yon_char_is_empty(new_val)) new_val="******"; else new_val="";
char *united = yon_char_unite(old_val,"\n",new_val,NULL);
gtk_list_store_set(window->list,&iter,YON_SAVE_COMPARE,united,-1);
free(united);
}
}
}
void on_config_global_local_save(GtkWidget *, main_window *){
main_config.save_config=3;
template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_BOTH,config_get_global_command,NULL);
if (window){
yon_save_window_hide_passwords(window);
};
}
void on_config_local_save(GtkWidget *, main_window *){
main_config.save_config=1;
template_saving_window *window = yon_save_proceed("system",YON_CONFIG_LOCAL,config_get_local_command,NULL);
if (window){
yon_save_window_hide_passwords(window);
};
}
void on_config_global_save(GtkWidget *, main_window *){
main_config.save_config=0;
template_saving_window *window = yon_save_proceed("global",YON_CONFIG_GLOBAL,config_get_global_command,NULL);
if (window){
yon_save_window_hide_passwords(window);
};
}
void on_config_custom_save(GtkWidget *, main_window *){
main_config.save_config=1;
template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_CUSTOM,yon_config_get_custom_command("system"),NULL);
if (window){
yon_save_window_hide_passwords(window);
};
}
void on_config_local_load(GtkWidget *,main_window *widgets){
yon_load_proceed(YON_CONFIG_LOCAL);
yon_interface_update(widgets);
main_config.load_mode=1;
}
void on_config_global_load(GtkWidget *,main_window *widgets){
yon_load_proceed(YON_CONFIG_GLOBAL);
yon_interface_update(widgets);
main_config.load_mode=0;
}
void on_config_custom_load(GtkWidget *,main_window *widgets){
yon_load_proceed(YON_CONFIG_CUSTOM);
textdomain(template_ui_LocaleName);
textdomain(LocaleName);
main_config.load_mode=3;
yon_interface_update(widgets);
}
void yon_load_proceed(YON_CONFIG_TYPE type){
yon_config_clean();
if (!yon_char_is_empty(config_get_default_command))
yon_config_load_config(YON_CONFIG_DEFAULT,config_get_default_command,NULL);
if (type==YON_CONFIG_GLOBAL){
if (yon_config_load_config(type,config_get_global_command,NULL)){
yon_ubl_status_box_render(yon_char_get_localised_from_lib(GLOBAL_LOAD_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
}
} else if (type==YON_CONFIG_LOCAL){
if (yon_config_load_config(type,config_get_local_command,NULL)){
yon_ubl_status_box_render(yon_char_get_localised_from_lib(LOCAL_LOAD_SUCCESS_LABEL),BACKGROUND_IMAGE_SUCCESS_TYPE);
}
} else if (type==YON_CONFIG_CUSTOM){
char *path="";
textdomain(template_ui_LocaleName);
GtkWidget *dialog = gtk_file_chooser_dialog_new(template_app_information.app_title,NULL,GTK_FILE_CHOOSER_ACTION_SAVE,CANCEL_LABEL,GTK_RESPONSE_CANCEL,OPEN_LABEL,GTK_RESPONSE_ACCEPT,NULL);
textdomain(LocaleName);
gtk_window_set_icon_name(GTK_WINDOW(dialog),"com.ublinux.ubl-settings-services");
gtk_window_set_title(GTK_WINDOW(dialog),TITLE_LABEL);
GtkFileFilter *filter = gtk_file_filter_new();
gtk_file_filter_add_pattern(filter,"*.ini");
gtk_file_filter_set_name(filter, "*.ini");
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog),filter);
gtk_widget_show(dialog);
int response = gtk_dialog_run(GTK_DIALOG(dialog));
if (response == GTK_RESPONSE_ACCEPT){
char *file = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
if (!yon_char_is_empty(file)){
path=file;
}
gtk_widget_destroy(dialog);
} else {
gtk_widget_destroy(dialog);
}
char *command = yon_config_get_custom_command(path);
if (yon_config_load_config(type,command,NULL)){
yon_ubl_status_box_render(yon_char_get_localised_from_lib(yon_char_get_localised_from_lib(LOCAL_LOAD_SUCCESS_LABEL)),BACKGROUND_IMAGE_SUCCESS_TYPE);
}
}
}
void yon_interface_update(main_window *widgets){
gtk_list_store_clear(widgets->BootUsersList);
gtk_list_store_clear(widgets->BootRingtoneList);
gtk_list_store_clear(widgets->KernelParametersList);
gtk_list_store_clear(widgets->InputTerminalList);
gtk_list_store_clear(widgets->OutputTerminalList);
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->BootUsersTree),NULL);
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->BootRingtoneTree),NULL);
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->KernelParametersTree),NULL);
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->InputTerminalTree),NULL);
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->OutputTerminalTree),NULL);
char *timeout = config(GRUB_TIMEOUT_parameter);
if (!yon_char_is_empty(timeout)){
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->BootSelectionTimerSpin),atof(timeout));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->BootSelectionTimerCheck),1);
} else {
gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->BootSelectionTimerSpin),0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->BootSelectionTimerCheck),0);
}
{
char *display_mode = config(GRUB_BOOT_SILENT_parameter);
if (!yon_char_is_empty(display_mode)){
gtk_combo_box_set_active_id(GTK_COMBO_BOX(widgets->BootDisplayModeCombo),display_mode);
}
}
{
char *grub_default = config(GRUB_DEFAULT_parameter);
if (!yon_char_is_empty(grub_default))
gtk_entry_set_text(GTK_ENTRY(widgets->OSDefaultEntry),grub_default);
}
{
GtkTreeIter iter;
int users_size;
int admins_size;
char *admins = config(GRUB_SUPERUSERS_parameter);
config_str users = yon_config_get_all_by_key(GRUB_PASSWORD_search,&users_size);
config_str admins_parsed = yon_char_parse(admins,&admins_size,",");
for (int i=0;i<users_size;i++){
yon_char_remove_last_symbol(users[i],'\n');
char *password = yon_char_new(users[i]);
char *username = yon_char_divide_search(password,"=",-1);
free(yon_char_divide_search(username,"[",-1));
yon_char_remove_last_symbol(username,']');
gtk_list_store_append(widgets->BootUsersList,&iter);
gtk_list_store_set(widgets->BootUsersList,&iter,0,yon_char_parsed_check_exist(admins_parsed,admins_size,username),1,username,2,"******",-1);
}
}
{
char *ringtone = config(GRUB_PLAY_parameter);
gsize size=0;
config_str codes = yon_window_config_get_section("melodies",&size);
GtkTreeIter iter;
for (gsize i=0;i<size;i++){
char *cur_code = NULL;
char *name = yon_char_new(codes[(int)i]);
yon_window_config_get_parameter("melodies",name,&cur_code,YON_TYPE_STRING);
gtk_list_store_append(widgets->BootRingtoneList,&iter);
gtk_list_store_set(widgets->BootRingtoneList,&iter,0,!yon_char_is_empty(ringtone)&&!strcmp(ringtone,cur_code),1,name,2,cur_code,-1);
free(cur_code);
free(name);
}
if (size) yon_char_parsed_free(codes,size);
}
{
int size;
GtkTreeIter iter;
char *parameter = config(GRUB_CMDLINE_LINUX_parameter);
config_str parameters = yon_char_parse(parameter,&size," ");
for (int i=1;i<main_config.kernel_size;i++){
char *description = yon_char_new(main_config.kernel_parameters[i]);
char *cur_parameter = yon_char_divide_search(description,"|",-1);
gtk_list_store_append(widgets->KernelParametersList,&iter);
gtk_list_store_set(widgets->KernelParametersList,&iter,0,yon_char_parsed_check_exist(parameters,size,cur_parameter)>-1,1,cur_parameter,2,_(description),-1);
}
if (yon_char_is_empty(parameter)) parameter="";
gtk_entry_set_text(GTK_ENTRY(widgets->CommandLineParametersEntry),parameter);
}
{
int size;
GtkTreeIter iter;
char *parameter = config(GRUB_TERMINAL_INPUT_parameter);
config_str parameters = yon_char_parse(parameter,&size," ");
for (int i=1;i<main_config.input_size;i++){
char *description = yon_char_new(main_config.input_parameters[i]);
char *cur_parameter = yon_char_divide_search(description,"|",-1);
gtk_list_store_append(widgets->InputTerminalList,&iter);
gtk_list_store_set(widgets->InputTerminalList,&iter,0,yon_char_parsed_check_exist(parameters,size,cur_parameter)>-1,1,cur_parameter,2,_(description),-1);
}
if (yon_char_is_empty(parameter)) parameter="";
gtk_entry_set_text(GTK_ENTRY(widgets->InputTerminalEntry),parameter);
}
{
int size;
GtkTreeIter iter;
char *parameter = config(GRUB_TERMINAL_OUTPUT_parameter);
config_str parameters = yon_char_parse(parameter,&size," ");
for (int i=1;i<main_config.output_size;i++){
char *description = yon_char_new(main_config.output_parameters[i]);
char *cur_parameter = yon_char_divide_search(description,"|",-1);
gtk_list_store_append(widgets->OutputTerminalList,&iter);
gtk_list_store_set(widgets->OutputTerminalList,&iter,0,yon_char_parsed_check_exist(parameters,size,cur_parameter)>-1,1,cur_parameter,2,_(description),-1);
}
if (yon_char_is_empty(parameter)) parameter="";
gtk_entry_set_text(GTK_ENTRY(widgets->OutputTerminalEntry),parameter);
}
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->BootUsersTree),GTK_TREE_MODEL(widgets->BootUsersList));
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->BootRingtoneTree),GTK_TREE_MODEL(widgets->BootRingtoneList));
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->KernelParametersTree),GTK_TREE_MODEL(widgets->KernelParametersList));
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->InputTerminalTree),GTK_TREE_MODEL(widgets->InputTerminalList));
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->OutputTerminalTree),GTK_TREE_MODEL(widgets->OutputTerminalList));
}
void on_kernel_parameter_switch(GtkCellRenderer *, char *path, main_window *widgets){
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->KernelParametersList);
if (gtk_tree_model_get_iter_from_string(model,&iter,path)){
int status;
char *parameter;
gtk_tree_model_get(model,&iter,0,&status,1,&parameter,-1);
gtk_list_store_set(widgets->KernelParametersList,&iter,0,!status,-1);
char *config_param = config(GRUB_CMDLINE_LINUX_parameter);
if (!yon_char_is_empty(config_param)){
int size;
config_str parsed = yon_char_parse(config_param,&size," ");
switch (status){
case 0:{
if (strstr(parameter,"=")){
char *param_copy = yon_char_new(parameter);
char *cur_param = yon_char_divide_search(param_copy,"=",-1);
free(param_copy);
GtkTreeIter itar;
for_iter(GTK_TREE_MODEL(widgets->KernelParametersList),&itar){
char *target;
gtk_tree_model_get(GTK_TREE_MODEL(widgets->KernelParametersList),&itar,1,&target,-1);
GtkTreePath *cur_path=gtk_tree_model_get_path(GTK_TREE_MODEL(widgets->KernelParametersList),&iter), *compare_path=gtk_tree_model_get_path(GTK_TREE_MODEL(widgets->KernelParametersList),&itar);
if (strstr(target,cur_param)&&strstr(target,"=")&&gtk_tree_path_compare(cur_path,compare_path)){
gtk_list_store_set(widgets->KernelParametersList,&itar,0,0,-1);
int pos = yon_char_parsed_check_exist(parsed,size,target);
if (pos>-1){
if (size>1){
parsed = yon_char_parsed_rip(parsed,&size,pos);
char *final = yon_char_parsed_to_string(parsed,size," ");
yon_config_register(GRUB_CMDLINE_LINUX_parameter,GRUB_CMDLINE_LINUX_command,final);
gtk_entry_set_text(GTK_ENTRY(widgets->CommandLineParametersEntry),final);
free(final);
} else {
gtk_entry_set_text(GTK_ENTRY(widgets->CommandLineParametersEntry),"");
yon_config_remove_by_key(GRUB_CMDLINE_LINUX_parameter);
}
}
}
gtk_tree_path_free(cur_path);
gtk_tree_path_free(compare_path);
}
free(cur_param);
}
int pos = yon_char_parsed_check_exist(parsed,size,parameter);
if (pos == -1){
yon_char_parsed_add_or_create_if_exists(parsed,&size,parameter);
char *final = yon_char_parsed_to_string(parsed,size," ");
yon_config_register(GRUB_CMDLINE_LINUX_parameter,GRUB_CMDLINE_LINUX_command,final);
gtk_entry_set_text(GTK_ENTRY(widgets->CommandLineParametersEntry),final);
free(final);
}
}break;
case 1:{
int pos = yon_char_parsed_check_exist(parsed,size,parameter);
if (pos>-1){
if (size>1){
parsed = yon_char_parsed_rip(parsed,&size,pos);
char *final = yon_char_parsed_to_string(parsed,size," ");
yon_config_register(GRUB_CMDLINE_LINUX_parameter,GRUB_CMDLINE_LINUX_command,final);
gtk_entry_set_text(GTK_ENTRY(widgets->CommandLineParametersEntry),final);
free(final);
} else {
gtk_entry_set_text(GTK_ENTRY(widgets->CommandLineParametersEntry),"");
yon_config_remove_by_key(GRUB_CMDLINE_LINUX_parameter);
}
}
} break;
}
} else if (status==0) {
yon_config_register(GRUB_CMDLINE_LINUX_parameter,GRUB_CMDLINE_LINUX_command,parameter);
gtk_entry_set_text(GTK_ENTRY(widgets->CommandLineParametersEntry),parameter);
}
}
}
void on_input_option_switch(GtkCellRenderer *,char *path, main_window *widgets){
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->InputTerminalList);
if (gtk_tree_model_get_iter_from_string(model,&iter,path)){
int status;
char *parameter;
gtk_tree_model_get(model,&iter,0,&status,1,&parameter,-1);
gtk_list_store_set(widgets->InputTerminalList,&iter,0,!status,-1);
char *config_param = config(GRUB_TERMINAL_INPUT_parameter);
if (!yon_char_is_empty(config_param)){
int size;
config_str parsed = yon_char_parse(config_param,&size," ");
switch (status){
case 0:{
int pos = yon_char_parsed_check_exist(parsed,size,parameter);
if (pos == -1){
yon_char_parsed_add_or_create_if_exists(parsed,&size,parameter);
char *final = yon_char_parsed_to_string(parsed,size," ");
yon_config_register(GRUB_TERMINAL_INPUT_parameter,GRUB_TERMINAL_INPUT_command,final);
gtk_entry_set_text(GTK_ENTRY(widgets->InputTerminalEntry),final);
free(final);
}
}break;
case 1:{
int pos = yon_char_parsed_check_exist(parsed,size,parameter);
if (pos>-1){
if (size>1){
parsed = yon_char_parsed_rip(parsed,&size,pos);
char *final = yon_char_parsed_to_string(parsed,size," ");
yon_config_register(GRUB_TERMINAL_INPUT_parameter,GRUB_TERMINAL_INPUT_command,final);
gtk_entry_set_text(GTK_ENTRY(widgets->InputTerminalEntry),final);
free(final);
} else {
gtk_entry_set_text(GTK_ENTRY(widgets->InputTerminalEntry),"");
yon_config_remove_by_key(GRUB_TERMINAL_INPUT_parameter);
}
}
} break;
}
} else if (status==0) {
yon_config_register(GRUB_TERMINAL_INPUT_parameter,GRUB_TERMINAL_INPUT_command,parameter);
gtk_entry_set_text(GTK_ENTRY(widgets->InputTerminalEntry),parameter);
}
}
}
void on_output_option_switch(GtkCellRenderer *,char *path, main_window *widgets){
GtkTreeIter iter;
GtkTreeModel *model = GTK_TREE_MODEL(widgets->OutputTerminalList);
if (gtk_tree_model_get_iter_from_string(model,&iter,path)){
int status;
char *parameter;
gtk_tree_model_get(model,&iter,0,&status,1,&parameter,-1);
gtk_list_store_set(widgets->OutputTerminalList,&iter,0,!status,-1);
char *config_param = config(GRUB_TERMINAL_OUTPUT_parameter);
if (!yon_char_is_empty(config_param)){
int size;
config_str parsed = yon_char_parse(config_param,&size," ");
switch (status){
case 0:{
int pos = yon_char_parsed_check_exist(parsed,size,parameter);
if (pos == -1){
yon_char_parsed_add_or_create_if_exists(parsed,&size,parameter);
char *final = yon_char_parsed_to_string(parsed,size," ");
yon_config_register(GRUB_TERMINAL_OUTPUT_parameter,GRUB_TERMINAL_OUTPUT_command,final);
gtk_entry_set_text(GTK_ENTRY(widgets->OutputTerminalEntry),final);
free(final);
}
}break;
case 1:{
int pos = yon_char_parsed_check_exist(parsed,size,parameter);
if (pos>-1){
if (size>1){
parsed = yon_char_parsed_rip(parsed,&size,pos);
char *final = yon_char_parsed_to_string(parsed,size," ");
yon_config_register(GRUB_TERMINAL_OUTPUT_parameter,GRUB_TERMINAL_OUTPUT_command,final);
gtk_entry_set_text(GTK_ENTRY(widgets->OutputTerminalEntry),final);
free(final);
} else {
gtk_entry_set_text(GTK_ENTRY(widgets->OutputTerminalEntry),"");
yon_config_remove_by_key(GRUB_TERMINAL_OUTPUT_parameter);
}
}
} break;
}
} else if (status==0) {
yon_config_register(GRUB_TERMINAL_OUTPUT_parameter,GRUB_TERMINAL_OUTPUT_command,parameter);
gtk_entry_set_text(GTK_ENTRY(widgets->OutputTerminalEntry),parameter);
}
}
}
// standard functions
/**config_init()
* [EN]
*
* [RU]
* Функция инициализации всех параметров конфигурации
*/
void config_init(){
main_config.always_open_documentation=0;
main_config.socket_id=-1;
main_config.save_socket_id=-1;
main_config.load_socket_id=-1;
main_config.lock_help=0;
main_config.lock_help=0;
main_config.lock_load_global=0;
main_config.lock_save_global=0;
main_config.lock_save_local=0;
main_config.load_mode=1;
main_config.password_min_length = yon_password_get_min_len();
main_config.kernel_parameters = yon_resource_open_file(kernel_options_path,&main_config.kernel_size);
main_config.input_parameters = yon_resource_open_file(terminal_input_path,&main_config.input_size);
main_config.output_parameters = yon_resource_open_file(terminal_output_path,&main_config.output_size);
}
void on_parameter_changed(GtkWidget *self,main_window *widgets){
if (self == widgets->BootSelectionTimerSpin||self == widgets->BootSelectionTimerCheck){
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->BootSelectionTimerCheck))){
glong val = gtk_spin_button_get_value(GTK_SPIN_BUTTON(widgets->BootSelectionTimerSpin));
if (val){
yon_config_register(GRUB_TIMEOUT_parameter,GRUB_TIMEOUT_command,yon_char_from_long(val));
return;
}
}
yon_config_remove_by_key(GRUB_TIMEOUT_parameter);
} else if (self == widgets->BootDisplayModeCombo){
char *display_mode = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(widgets->BootDisplayModeCombo));
if (!yon_char_is_empty(display_mode)){
yon_config_register(GRUB_BOOT_SILENT_parameter,GRUB_BOOT_SILENT_command,display_mode);
} else {
yon_config_remove_by_key(GRUB_BOOT_SILENT_parameter);
}
} else if (self == widgets->OSDefaultEntry){
char *os = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->OSDefaultEntry));
if (!yon_char_is_empty(os)&&strcmp(os,DEFAULT_MENU_ITEM_LABEL)){
yon_config_register(GRUB_DEFAULT_parameter,GRUB_DEFAULT_command,os);
} else {
yon_config_remove_by_key(GRUB_DEFAULT_parameter);
}
}// else if (){
}
/**yon_main_window_complete(main_window *widgets)
* [EN]
*
* [RU]
* Функция настройки основного окна приложения. [widgets] - структура со стандартным интерфейсом.
*/
void yon_main_window_complete(main_window *widgets){
widgets = yon_remalloc(widgets,sizeof(main_window));
GtkBuilder *builder = gtk_builder_new_from_resource(glade_path);
gtk_box_pack_start(GTK_BOX(widgets->InterfaceBox),yon_gtk_builder_get_widget(builder,"BoxMain"),1,1,0);
// Custom widgets configuration
{
widgets->BootDisplayModeCombo = yon_gtk_builder_get_widget(builder,"BootDisplayModeCombo");
widgets->BootRingtoneAddButton = yon_gtk_builder_get_widget(builder,"BootRingtoneAddButton");
widgets->BootRingtoneEditButton = yon_gtk_builder_get_widget(builder,"BootRingtoneEditButton");
widgets->BootRingtoneRemoveButton = yon_gtk_builder_get_widget(builder,"BootRingtoneRemoveButton");
widgets->BootRingtoneTree = yon_gtk_builder_get_widget(builder,"BootRingtoneTree");
widgets->BootSelectionTimerCheck = yon_gtk_builder_get_widget(builder,"BootSelectionTimerCheck");
widgets->BootSelectionTimerSpin = yon_gtk_builder_get_widget(builder,"BootSelectionTimerSpin");
widgets->BootUsersAddButton = yon_gtk_builder_get_widget(builder,"BootUsersAddButton");
widgets->BootUsersEditButton = yon_gtk_builder_get_widget(builder,"BootUsersEditButton");
widgets->BootUsersRemoveButton = yon_gtk_builder_get_widget(builder,"BootUsersRemoveButton");
widgets->BootUsersTree = yon_gtk_builder_get_widget(builder,"BootUsersTree");
widgets->CommandLineParametersEntry = yon_gtk_builder_get_widget(builder,"CommandLineParametersEntry");
widgets->InputTerminalEntry = yon_gtk_builder_get_widget(builder,"InputTerminalEntry");
widgets->InputTerminalTree = yon_gtk_builder_get_widget(builder,"InputTerminalTree");
widgets->KernelParametersTree = yon_gtk_builder_get_widget(builder,"KernelParametersTree");
widgets->MenuButton = yon_gtk_builder_get_widget(builder,"MenuButton");
widgets->MenuOverlay = yon_gtk_builder_get_widget(builder,"MenuOverlay");
widgets->OSDefaultEntry = yon_gtk_builder_get_widget(builder,"OSDefaultEntry");
widgets->OutputTerminalEntry = yon_gtk_builder_get_widget(builder,"OutputTerminalEntry");
widgets->OutputTerminalTree = yon_gtk_builder_get_widget(builder,"OutputTerminalTree");
widgets->KernelChooseCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"KernelChooseCell"));
widgets->InputChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"InputChosenCell"));
widgets->OutputChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"OutputChosenCell"));
widgets->BootUsersList = GTK_LIST_STORE(gtk_builder_get_object(builder,"BootUsersList"));
widgets->BootRingtoneList = GTK_LIST_STORE(gtk_builder_get_object(builder,"BootRingtoneList"));
widgets->KernelParametersList = GTK_LIST_STORE(gtk_builder_get_object(builder,"KernelParametersList"));
widgets->InputTerminalList = GTK_LIST_STORE(gtk_builder_get_object(builder,"InputTerminalList"));
widgets->OutputTerminalList = GTK_LIST_STORE(gtk_builder_get_object(builder,"OutputTerminalList"));
}
g_signal_connect(G_OBJECT(widgets->MenuButton),"clicked",G_CALLBACK(yon_menu_window_open),widgets);
g_signal_connect(G_OBJECT(widgets->BootUsersAddButton),"clicked",G_CALLBACK(on_user_add_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->BootUsersEditButton),"clicked",G_CALLBACK(on_user_edit_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->BootUsersRemoveButton),"clicked",G_CALLBACK(on_user_remove_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->BootRingtoneAddButton),"clicked",G_CALLBACK(on_ringtone_add_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->BootRingtoneEditButton),"clicked",G_CALLBACK(on_ringtone_edit_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->BootRingtoneRemoveButton),"clicked",G_CALLBACK(on_ringtone_remove_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->KernelChooseCell),"toggled",G_CALLBACK(on_kernel_parameter_switch),widgets);
g_signal_connect(G_OBJECT(widgets->InputChosenCell),"toggled",G_CALLBACK(on_input_option_switch),widgets);
g_signal_connect(G_OBJECT(widgets->OutputChosenCell),"toggled",G_CALLBACK(on_output_option_switch),widgets);
g_signal_connect(G_OBJECT(widgets->BootSelectionTimerCheck),"toggled",G_CALLBACK(yon_gtk_widget_set_sensitive_from_toggle_button),widgets->BootSelectionTimerSpin);
g_signal_connect(G_OBJECT(widgets->BootSelectionTimerCheck),"toggled",G_CALLBACK(on_parameter_changed),widgets);
g_signal_connect(G_OBJECT(widgets->BootSelectionTimerSpin),"changed",G_CALLBACK(on_parameter_changed),widgets);
g_signal_connect(G_OBJECT(widgets->BootDisplayModeCombo),"changed",G_CALLBACK(on_parameter_changed),widgets);
g_signal_connect(G_OBJECT(widgets->CommandLineParametersEntry),"changed",G_CALLBACK(on_parameter_changed),widgets);
g_signal_connect(G_OBJECT(widgets->InputTerminalEntry),"changed",G_CALLBACK(on_parameter_changed),widgets);
g_signal_connect(G_OBJECT(widgets->OutputTerminalEntry),"changed",G_CALLBACK(on_parameter_changed),widgets);
g_signal_connect(G_OBJECT(widgets->OSDefaultEntry),"changed",G_CALLBACK(on_parameter_changed),widgets);
g_signal_connect(G_OBJECT(widgets->BootDisplayModeCombo),"changed",G_CALLBACK(on_parameter_changed),widgets);
g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets);
g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets);
g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets);
g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_global_local_save),NULL);
g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(on_config_local_save),NULL);
g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),NULL);
g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(on_config_custom_save),NULL);
yon_root_button_setup((template_main_window*)widgets,main_config.launch_arguments,main_config.launch_size);
yon_save_window_set_postsave_function(on_save_done,widgets);
yon_load_proceed(YON_CONFIG_LOCAL);
yon_interface_update(widgets);
}
int main(int argc, char *argv[]){
setlocale(LC_ALL, "");
textdomain (LocaleName);
config_init();
yon_ubl_connect_config((_template_config*)&main_config);
yon_ubl_window_init(TITLE_LABEL,TITLE_INFO_LABEL,LocaleName,CssPath,LocaleName,version_application,WIKI_LINK);
config_str unfound = NULL;
int size=0;
yon_ubl_setup_arguments(argc,argv,&unfound,&size,NULL);
gtk_init(&argc,&argv);
template_main_window *widgets = yon_ubl_window_setup();
yon_main_window_complete((main_window*)widgets);
char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL);
yon_window_config_load(path);
main_config.launch_arguments=yon_char_parsed_copy(argv,argc);
main_config.launch_size=argc;
if (getuid()!=0){
textdomain(template_ui_LocaleName);
yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
textdomain(LocaleName);
}
gtk_main();
return 0;
}

File diff suppressed because it is too large Load Diff

@ -1,497 +1,275 @@
#include <gtk/gtk.h>
#include <cstddef> #include <gtk/gtkx.h>
#include <iostream>
#include <gtkmm.h>
#include <string>
#include <vector>
#include <stdio.h>
#include <gtkmm/stock.h>
#include <gtkmm/window.h>
#include <gtkmm/plug.h>
#include <locale.h> #include <locale.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <libintl.h> #include <libintl.h>
#include <glibmm/i18n.h> #include <getopt.h>
#include <map> #include <libintl.h>
#include "ubl-util-standard.c" #include <libublsettings.h>
#include "util.h" #include <libublsettings-gtk3.h>
#include "save.h" #include <libublsettingsui-gtk3.h>
#include "load.h"
#include <dlfcn.h>
#include "../compile/ubl-cmake.h"
#include "menu_os.h"
#ifdef WEBKIT_FOUND #ifdef WEBKIT_FOUND
#include <webkit2/webkit2.h> #include <webkit2/webkit2.h>
#endif #endif
#include "ubl-strings.h"
#include "my_process.h" #define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubl-settings-bootloader"
using namespace std;
#define _(String) gettext(String)
extern int socket_ext_id_I;
extern int socket_trd_id_I; #define glade_path "/com/ublinux/ui/ubl-settings-bootloader.glade"
extern string version_application; #define glade_path_password "/com/ublinux/ui/ubl-settings-bootloader-password.glade"
extern bool flag_save; #define glade_path_user "/com/ublinux/ui/ubl-settings-bootloader-user.glade"
extern bool flag_save_local; #define glade_path_ringtone "/com/ublinux/ui/ubl-settings-bootloader-ringtone.glade"
extern bool flag_save_global; #define glade_path_menu_window "/com/ublinux/ui/ubl-settings-bootloader-menu.glade"
extern bool flag_load_global; #define glade_path_menu_item "/com/ublinux/ui/ubl-settings-bootloader-menu-item.glade"
extern bool flag_lock_help; #define banner_path "/com/ublinux/images/ubl-settings-bootloader-banner.png"
void me_thread(string cmd); #define CssPath "/com/ublinux/css/ubl-settings-bootloader.css"
#define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL)
#define minimal_width 640 #define icon_path "com.ublinux.ubl-settings-bootloader"
#define minimal_height 500 #define kernel_options_path "resource:///com/ublinux/csv/grub-parameters.csv"
#define str_tooltip_add_user _("Add user") #define terminal_input_path "resource:///com/ublinux/csv/grub-terminal-input.csv"
#define str_tooltip_del_user _("Delete user") #define terminal_output_path "resource:///com/ublinux/csv/grub-terminal-output.csv"
#define str_tooltip_add_melody _("Add melody")
#define str_tooltip_del_melody _("Delete melody") #define LocaleName "ubl-settings-bootloader"
#define str_tooltip_boot_menu _("Selecting the loading mode option")
#define copyright _("Copyright © UBSoft LLC, 2022 - ") #define get_menus_entry_command "/usr/lib/ublinux/scripts/grub-functions exec_get_all_menuentry"
#define name_app _("System boot")
#define website _("https://wiki.ublinux.com") #define check_is_password_hash(password) system(yon_char_unite("/lib/ublinux/functions is_hash_password '", password,"'",NULL))
#define project_Home_page _("Project homepage")
#define configuring_system_boot _("Configuring system boot parameters") #define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," get boot GRUB_SUPERUSERS GRUB_TIMEOUT GRUB_DEFAULT GRUB_BOOT_SILENT GRUB_PASSWORD[*] GRUB_CMDLINE_LINUX GRUB_TERMINAL_INPUT GRUB_TERMINAL_OUTPUT GRUB_PLAY",NULL)
#define system_boot _("System boot setup") #define config_get_local_command "ubconfig --source system get boot GRUB_SUPERUSERS GRUB_TIMEOUT GRUB_DEFAULT GRUB_BOOT_SILENT GRUB_PASSWORD[*] GRUB_CMDLINE_LINUX GRUB_TERMINAL_INPUT GRUB_TERMINAL_OUTPUT GRUB_PLAY"
#define str_about _("About System boot") #define config_get_global_command "ubconfig --source global get boot GRUB_SUPERUSERS GRUB_TIMEOUT GRUB_DEFAULT GRUB_BOOT_SILENT GRUB_PASSWORD[*] GRUB_CMDLINE_LINUX GRUB_TERMINAL_INPUT GRUB_TERMINAL_OUTPUT GRUB_PLAY"
#define command_line_parameters _("Command line parameters:") #define config_get_default_command ""
#define load_default _("Load default:")
#define seconds _("seconds") #define config_get_global_only_parameters "ubconfig --source global get boot GRUB_USER"
#define download_menu _("Download menu") #define config_get_local_only_parameters ""
#define terminal_for_input _("Terminal for input")
#define terminal_for_output _("Terminal for output") #define GRUB_TIMEOUT_parameter "GRUB_TIMEOUT"
#define boot_selection_menu_timer _("Boot selection menu timer:") #define GRUB_TIMEOUT_command "ubconfig --source system get boot GRUB_TIMEOUT"
#define str_help _("Help")
#define str_about_1 _("About") #define GRUB_DEFAULT_parameter "GRUB_DEFAULT"
#define str_save _("Save") #define GRUB_DEFAULT_command "ubconfig --source system get boot GRUB_DEFAULT"
#define str_load _("Load")
#define str_edit _("Edit") #define GRUB_BOOT_SILENT_parameter "GRUB_BOOT_SILENT"
#define str_adding _("Adding") #define GRUB_BOOT_SILENT_command "ubconfig --source system get boot GRUB_BOOT_SILENT"
#define save_all _("Save configuration")
#define save_local _("Save in local configuration") #define GRUB_PASSWORD_parameter "GRUB_PASSWORD"
#define save_global _("Save in global configuration") #define GRUB_PASSWORD_search "GRUB_PASSWORD["
#define load_global _("Load global configuration") #define GRUB_PASSWORD(target) yon_char_unite("GRUB_PASSWORD[",target,"]",NULL)
#define load_local _("Load local configuration") #define GRUB_PASSWORD_command "ubconfig --source system get boot GRUB_PASSWORD[*]"
#define read_online _("Read online")
#define str_cancel _("Cancel") #define GRUB_CMDLINE_LINUX_parameter "GRUB_CMDLINE_LINUX"
#define always_redirect _("Always redirect") #define GRUB_CMDLINE_LINUX_command "ubconfig --source system get boot GRUB_CMDLINE_LINUX"
#define boot_screen_display_mode _("Boot screen display mode:")
#define no_loading_animation_800_600 _("No loading animation,\nfull log") #define GRUB_TERMINAL_INPUT_parameter "GRUB_TERMINAL_INPUT"
#define no_loading_animation _("No loading animation, full log") #define GRUB_TERMINAL_INPUT_command "ubconfig --source system get boot GRUB_TERMINAL_INPUT"
#define boot_menu_user_name _("Boot menu user name:")
#define boot_menu_user_password _("Boot menu user password:") #define GRUB_TERMINAL_OUTPUT_parameter "GRUB_TERMINAL_OUTPUT"
#define last_successful_upload _("Last successful upload") #define GRUB_TERMINAL_OUTPUT_command "ubconfig --source system get boot GRUB_TERMINAL_OUTPUT"
#define read_documentation_web _("Would you like to read documentation in the Web?")
#define redirected_documentation _("You will be redirected to documentation website where documentation is\n""translated and supported by community.") #define GRUB_USER_parameter "GRUB_USER"
#define user_name_configuration_editing_code _("User name to enter boot configuration editing mode") #define GRUB_USER_command "ubconfig --source system get boot GRUB_USER"
#define user_password_configuration_edit_mode _("User password to enter boot configuration edit mode")
#define loading_animation_with _("Loading animation with log") #define GRUB_SUPERUSERS_parameter "GRUB_SUPERUSERS"
#define loading_animation_without _("Loading animation without log") #define GRUB_SUPERUSERS_command "ubconfig --source system get boot GRUB_SUPERUSERS"
#define lack_loading_animation_800_600 _("Lack of loading animation with the\noutput of the abbreviated log")
#define lack_loading_animation _("Lack of loading animation with the output of the abbreviated log") #define GRUB_PLAY_parameter "GRUB_PLAY"
#define web_url _("https://wiki.ublinux.com") #define GRUB_PLAY_command "ubconfig --source system get boot GRUB_PLAY"
#define enter_password _("Enter your password")
#define enter_login _("Enter login") typedef char* string;
#define str_version _("ubl-settings-bootloader version: ")
#define local_read_error _("Local configuration reading error") __attribute__((unused)) static \
#define global_read_error _("Global configuration read error") string version_application;
#define local_write_error _("Local configuration write error")
#define global_write_error _("Global configuration write error") typedef struct {
#define error_save_all _("Error saved local and global configuration") template_config_fields
#define local_load_ok _("Local configuration downloaded successfully") int save_config;
#define global_load_ok _("Global configuration downloaded successfully") config_str launch_arguments;
#define local_ok_written _("Local configuration successfully written") int launch_size;
#define global_ok_written _("Global configuration successfully written") int password_min_length;
#define successfully_save_all _("Successfully saved local and global configuration")
#define nothing_save _("Nothing to save!") int kernel_size;
#define program_as_root _("The program must be run as root") config_str kernel_parameters;
#define str_active _("Active")
#define str_option _("Option") int input_size;
#define str_title _("Title") config_str input_parameters;
#define str_user _("User")
#define str_password _("Password") int output_size;
#define str_administrator _("Administrator") config_str output_parameters;
#define str_select _("Select")
#define str_melody_code _("Melody code") } config;
#define str_ringtone_at_startup _("Ringtone at startup") extern config main_config;
#define str_description _("Description")
#define str_title_Boot_Menu_Users _("Boot Menu Users") typedef struct {
#define str_title_Ringtone_Startup _("Ringtone at startup") template_window_fields
#define str_null_melody_name _("Enter the name and code of the tune in the \"Ringtone at startup\" field") GtkWidget *BootDisplayModeCombo;
#define str_null_username _("Enter name and password in the \"Boot Menu Users\" field") GtkWidget *BootRingtoneAddButton;
#define str_help_h _("GTK settings bootloader for UBLinux\n" \ GtkWidget *BootRingtoneEditButton;
"\n" \ GtkWidget *BootRingtoneRemoveButton;
"Usage: ubl-settings-bootloader [OPTIONS...]\n" \ GtkWidget *BootRingtoneTree;
"Options:\n" \ GtkWidget *BootSelectionTimerCheck;
" -h, --help\t Show this help\n" \ GtkWidget *BootSelectionTimerSpin;
" -V, --version\t Show package version\n" \ GtkWidget *BootUsersAddButton;
" --lock-help Lock utility help\n" \ GtkWidget *BootUsersEditButton;
" --lock-save Lock saving local and global configuration\n" \ GtkWidget *BootUsersRemoveButton;
" --lock-save-local Lock save global configuration\n" \ GtkWidget *BootUsersTree;
" --lock-save-global Lock load global configuration\n" \ GtkWidget *CommandLineParametersEntry;
" --lock-load-global Lock load global configuration\n") GtkWidget *InputTerminalEntry;
#define no_recognized _("Argument not recognized\n") GtkWidget *InputTerminalTree;
GtkWidget *KernelParametersTree;
#define global_load "ubconfig --default --source global get boot" GtkWidget *MenuButton;
#define system_load "ubconfig --default --source system get boot" GtkWidget *MenuOverlay;
#define all_save "ubconfig set boot " GtkWidget *OSDefaultEntry;
#define all_remove "ubconfig remove boot " GtkWidget *OutputTerminalEntry;
#define global_save "ubconfig --target global --noexecute set boot " GtkWidget *OutputTerminalTree;
#define system_save "ubconfig --target system set boot "
#define global_remove "ubconfig --target global --noexecute remove boot " GtkCellRenderer *KernelChooseCell;
#define system_remove "ubconfig --target system remove boot " GtkCellRenderer *OutputChosenCell;
#define const_link_doc "https://wiki.ublinux.com/ru/Программное_обеспечениерограммы_и_утилиты/Все/ubl-settings-bootloader" GtkCellRenderer *InputChosenCell;
#define cmd_xdg "xdg-open "
#define cmd_execute "su -l %s -c \" DISPLAY=$DISPLAY %s \"" GtkListStore *BootUsersList;
#define icon_checked "com.ublinux.ubl-settings-bootloader.checked" GtkListStore *BootRingtoneList;
#define icon_warning "com.ublinux.ubl-settings-bootloader.warning" GtkListStore *KernelParametersList;
#define kernel_csv "grub-cmdline-linux.csv" GtkListStore *InputTerminalList;
#define melody_csv "grub-play.csv" GtkListStore *OutputTerminalList;
#define IPT_csv "grub-terminal-input.csv"
#define OTT_csv "grub-terminal-output.csv" } main_window;
#define path_app "/usr/bin/"
#define path_glade "/com/ublinux/ui/ubl-settings-bootloader.glade" typedef struct {
#define path_css "/com/ublinux/css/ubl-settings-bootloader.css" GtkWidget *Window;
#define app_name "ubl-settings-bootloader" GtkWidget *StatusBox;
#define path_resources "/usr/share/ubl-settings-bootloader" GtkWidget *TitleLabel;
#define path_img_head_background "/com/ublinux/images/ubl-settings-bootloader-banner.png"
#define ui_config_path Utils::yon_char_unite(Utils::yon_ubl_user_get_home_directory(),"/.config/",app_name,"/",app_name,".conf",NULL) GtkWidget *UserCancelButton;
GtkWidget *UserOkButton;
#define cmd_pars_list_os "/usr/lib/ublinux/scripts/grub-functions exec_get_all_menuentry" GtkWidget *PasswordEntry;
#define cmd_last_launched_os "/usr/lib/ublinux/scripts/grub-functions exec_get_last_menuentry" GtkWidget *RepeatPasswordEntry;
#define info_box_ok_css "boxInfoMessOK" GtkWidget *PasswordHashEntry;
#define info_box_error_css "boxInfoMessError" GtkWidget *HashBox;
#define str_add_user _("User added") GtkWidget *PasswordBox;
#define str_add_melody _("Melody added") GtkWidget *NoEncriptionCheck;
#define str_del_user _("User deleted") } yon_password_window;
#define str_del_melody _("Melody deleted")
#define LAST_MODE_LABEL _("Last succeeded load mode") typedef struct {
GtkWidget *Window;
class View_edit_add_table { GtkWidget *StatusBox;
private: GtkWidget *TitleLabel;
Glib::RefPtr<Gtk::Builder> builder;
Gtk::Window* wndAddEditData; GtkWidget *AdminCheck;
Gtk::Button* btnCancel; GtkWidget *UsernameEntry;
Gtk::Button* btnSaveEditSave; GtkWidget *PasswordEntry;
Gtk::CheckButton* chkAddEdit; GtkWidget *PasswordButton;
Gtk::Entry* entryCol1;
Gtk::Entry* entryCol2; GtkWidget *CancelButton;
Gtk::Label* lblAddEditCheckBox; GtkWidget *AcceptButton;
Gtk::Label* lblAddEditCol1;
Gtk::Label* lblAddEditCol2; char *prev_name;
Gtk::Label* lblEditAddHead; } yon_user_window;
bool flag_save = false;
string mode_show = ""; typedef struct {
GtkWidget *Window;
public: GtkWidget *StatusBox;
struct struct_data { GtkWidget *TitleLabel;
bool check;
string column1; GtkWidget *ChooseCheck;
string column2; GtkWidget *NameEntry;
}; GtkWidget *CodeEntry;
struct struct_data old_data;
struct struct_data new_data; GtkWidget *CancelButton;
public: GtkWidget *AcceptButton;
View_edit_add_table();
//~View_edit_add_table(); char *prev_name;
void settings(); } yon_ringtone_window;
void event();
void localization();
void cancel(); //main
void save(); void on_save_done(main_window *, config_str output, int size);
void check_space_entry(); void on_config_global_local_save(GtkWidget *, main_window *);
void set_data(bool check, string column1, string column2); void on_config_local_save(GtkWidget *, main_window *);
struct struct_data get_data(); void on_config_global_save(GtkWidget *, main_window *);
void show(); void on_config_custom_save(GtkWidget *, main_window *);
void show_melody_edit(); void on_config_local_load(GtkWidget *,main_window *);
void show_melody_add(); void on_config_global_load(GtkWidget *,main_window *);
void show_user_edit(); void on_config_custom_load(GtkWidget *,main_window *);
void show_user_add();
void get_builder(); void yon_load_proceed(YON_CONFIG_TYPE type);
};
void yon_interface_update(main_window *);
class CmdArgParser : public Glib::OptionGroup void on_save_done(main_window *widgets, config_str output, int size);
{
public: void on_kernel_parameter_switch(GtkCellRenderer *, char *path, main_window *widgets);
CmdArgParser(const std::string &p_name, const std::string &p_description, const std::string &p_help); void on_input_option_switch(GtkCellRenderer *,char *path, main_window *widgets);
::Window GetSocketID() const; void on_output_option_switch(GtkCellRenderer *,char *path, main_window *widgets);
private: void config_init();
int m_socketID = 0;
}; void on_parameter_changed(GtkWidget *self,main_window *widgets);
class MainWindow : public Gtk::ApplicationWindow void yon_main_window_complete(main_window *widgets);
{
public: //password
class ModelColumns : public Gtk::TreeModel::ColumnRecord void yon_password_change(GtkWidget *, GtkEntry *entry);
{ void on_password_accept(GtkWidget *self, dictionary *dict);
public: yon_password_window *yon_ubl_settings_usergroups_password_new();
ModelColumns() int yon_check_password_blocked(char *password);
{
add(check_button), add(name); //user
add(description); void on_user_accept(GtkWidget *,dictionary *dict);
} void on_user_add_clicked(GtkWidget *,main_window *widgets);
// Gtk::TreeModelColumn<Gtk::CheckButton> check_button; void on_user_edit_clicked(GtkWidget *,main_window *widgets);
Gtk::TreeModelColumn<bool> check_button; void on_user_remove_clicked(GtkWidget *,main_window *widgets);
Gtk::TreeModelColumn<Glib::ustring> name; yon_user_window *yon_user_window_new();
Gtk::TreeModelColumn<Glib::ustring> description;
}; //ringtone
class ModelColumnsUser : public Gtk::TreeModel::ColumnRecord void on_ringtone_accept(GtkWidget *,dictionary *dict);
{ void on_ringtone_add_clicked(GtkWidget *,main_window *widgets);
public: void on_ringtone_edit_clicked(GtkWidget *,main_window *widgets);
ModelColumnsUser() void on_ringtone_remove_clicked(GtkWidget *,main_window *widgets);
{ yon_ringtone_window *yon_ringtone_window_new();
add(check_button), add(name);
add(password); //menu
}
// Gtk::TreeModelColumn<Gtk::CheckButton> check_button; typedef struct {
Gtk::TreeModelColumn<bool> check_button; GtkWidget *MenuWindow;
Gtk::TreeModelColumn<Glib::ustring> name; GtkWidget *BackButton;
Gtk::TreeModelColumn<Glib::ustring> password; GtkWidget *ItemsRevealer;
}; GtkWidget *ItemsListBox;
class ModelColumnsMelody : public Gtk::TreeModel::ColumnRecord GtkWidget *ChildrenRevealer;
{ GtkWidget *ChildrenListBox;
public:
ModelColumnsMelody() int seat_grab;
{ dictionary *menu_items;
add(check_button), add(title); char *cur_selection;
add(melody_code); int button_pos_x;
} int button_pos_y;
// Gtk::TreeModelColumn<Gtk::CheckButton> check_button; } yon_menu_window;
Gtk::TreeModelColumn<bool> check_button;
Gtk::TreeModelColumn<Glib::ustring> title; typedef struct {
Gtk::TreeModelColumn<Glib::ustring> melody_code; GtkWidget *MenuItemBox;
}; GtkWidget *MenuButton;
GtkWidget *MenuTextLabel;
ModelColumns m_columns; GtkWidget *NextIconButton;
ModelColumnsUser m_columns_user;
ModelColumnsMelody m_columns_melody; char *target;
Glib::RefPtr<Gtk::Builder> builder;
Gtk::Widget *plug = NULL; main_window *widgets;
Gtk::SpinButton *spbSecond; yon_menu_window *window;
Gtk::Label *lblBootMenuUsers;
Gtk::Label *lblRingtoneStartup; dictionary *children;
Gtk::Label *lblInfoSeconds;
Gtk::Label *lblInfoDefaultDonw; } yon_menu_item;
Gtk::Label *lblInfoCommand;
Gtk::Label *lblInfoCommand1; yon_menu_window *yon_menu_window_open(GtkWidget *target, main_window *widgets);
Gtk::Label *lblHeaderAboutTopic; gboolean on_menu_clicked(GtkWidget *, GdkEventButton *, yon_menu_window *);
Gtk::Label *lblInfoCommand2; yon_menu_window *yon_menu_window_new();
Gtk::Label *lblLoadMenu; yon_menu_item *yon_menu_item_new();
Gtk::Label *lblInfoInputTerminal; void on_menu_window_size_reallocated(GtkWidget *,GtkAllocation *,yon_menu_window *window);
Gtk::Label *lblInfoOutputTerminal; void on_menu_chosen(GtkWidget *, yon_menu_item *item);
Gtk::Label *lblHeaderName; void on_submenu_open(GtkWidget *,yon_menu_item *item);
Gtk::Label *lblInfoHead; void on_children_clean(GtkWidget*, yon_menu_window *window);
Gtk::Button *btnAddUser; gboolean yon_on_revealer_switched (yon_menu_window *window);
Gtk::Button *btnRemoveUser; void yon_save_window_hide_passwords(template_saving_window *window);
Gtk::Button *btnAddMusic;
Gtk::Button *btnRemoveMusic;
Gtk::Button *btnEditUser;
Gtk::Button *btnEditMusic;
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 *btnHelp;
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;
Gtk::Label *lblwebHeaderName;
Gtk::Label *lblhelpText;
Gtk::Label *lblhelpHeader;
Gtk::CheckButton *chkAlwaysOpenHelp;
Gtk::Button *btnReadHelp;
Gtk::Button *btnCancelHelp;
Gtk::Window *wndShowWeb;
Gtk::Button *btnOpenMenuOS1;
Gtk::Entry *entrListOS;
Gtk::Overlay *overMenuOS;
Gtk::Revealer* revilerMenuOS;
std::vector<std::string> vec_Option_kernel;
std::vector<std::string> vec_Option_IPT;
std::vector<std::string> vec_Option_OTT;
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 *my_web_kit = NULL;
#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();
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();
View_edit_add_table obj_view_edit_add_table = View_edit_add_table();
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;
size_t len_old_melody = 0;
size_t len_old_user = 0;
int old_height = 0;
int old_width = 0;
Glib::RefPtr<Gtk::StyleContext> boxInfo;
string str_cmd_error = "";
template <typename Type>
struct Result {
Type response;
int error;
};
public:
std::map<string, string> map_cmd_error;
string global_lick_doc = "";
MainWindow(BaseObjectType *obj, Glib::RefPtr<Gtk::Builder> const &builder);
MainWindow(Glib::RefPtr<Gtk::Builder> const &builder);
~MainWindow();
void open_browser();
void select_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 open_help();
void validate_melody();
void select_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 temp_help_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(string link_doc);
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);
bool intel_idle_cstate_check(int size, Glib::RefPtr<Gtk::ListStore> &list_store, string key);
void wrapper_add_data_user();
void wrapper_add_data_melody();
void check_resize_window();
void set_plug(Gtk::Widget *plug);
void wrapper_edit_show_user();
void wrapper_edit_show_melody();
void wrapper_edit_melody(bool check, string column1, string column2);
void wrapper_edit_user(bool check, string column1, string column2);
void wrapper_set_add_data_melody(bool flag, string &name, string &code);
void wrapper_set_add_data_user(bool flag, string &name, string &password);
void set_menu_os_to_button();
};
class SettingsPlug : public Gtk::Plug
{
public:
Gtk::Window *window;
SettingsPlug(::Window p_socketID, Glib::RefPtr<Gtk::Builder> builder);
private:
Gtk::Widget *plugBox;
Gtk::Widget *parent;
};
void help();
void wrapper_help_show(GtkWidget *self, char* link, gpointer user_data);

@ -1 +0,0 @@
#cmakedefine WEBKIT_FOUND

@ -0,0 +1,65 @@
#define TITLE_LABEL _("System boot")
#define TITLE_INFO_LABEL _("Configuring system boot parameters")
#define BOOT_MENU_LABEL _("Boot menu")
#define BOOT_SELECTION_LABEL _("Boot selection menu timer:")
#define SECONDS_LABEL _("seconds")
#define DEFAULT_LABEL _("Default")
#define DEFAULT_OS_LABEL _("Default OS:")
#define LOAD_DISPLAY_MODE_LABEL _("Load screen display mode:")
#define BOOT_USERS_LABEL _("Boot Menu Users")
#define STARTUP_RINGTONE_LABEL _("Startup ringtone")
#define KERNEL_PARAMETERS_LABEL _("Parameters passed to the kernel")
#define CMD_PARAMETERS_LABEL _("Command line parameters:")
#define INPUT_TERMINAL_LABEL _("Input terminal")
#define OUTPUT_TERMINAL_LABEL _("Output terminal")
#define ADMINISTRRATOR_LABEL _("Administrator")
#define NAME_LABEL _("Name")
#define USER_LABEL _("User")
#define PASSWORD_LABEL _("Password")
#define MELODY_CODE_LABEL _("Melody code")
#define OPTION_LABEL _("Option")
#define DESCRIPTION_LABEL _("Description")
#define ADD_LABEL _("Add")
#define EDIT_LABEL _("Edit")
#define REMOVE_LABEL _("Remove")
#define ACCEPT_LABEL _("Accept")
#define CANCE_LABEL _("Cancel")
#define BOOT_LOG_LABEL _("Boot animation with log")
#define BOOT_NO_LOG_LABEL _("Boot animation without log")
#define NO_BOOT_LOG_LABEL _("No boot animation with log")
#define NO_BOOT_NO_LOG_LABEL _("No boot animation with shortened log")
#define BACK_LABEL _("Back")
#define DEFAULT_MENU_ITEM_LABEL _("Default (Use last succeeded)")
#define PASSWORD_TITLE_LABEL _("Password input")
#define PASSWORD_REPEAT_LABEL _("Repeat password:")
#define PASSWORD_HASH_LABEL _("Password hash:")
#define PASSWORD_NO_ENCRYPT_LABEL _("Do not encrypt password")
#define RESTRICTED_SYMBOLS_LABEL _("Password contain special symbols")
#define EMPTY_IMPORTANT_LABEL _("Empty important field")
#define PASSWORD_MISMATCH_LABEL _("Password mismatch")
#define PASSWORD_TEXT_LABEL _("Password:")
#define PASSWORD_REPEAT_LABEL _("Repeat password:")
#define PASSWORD_DO_NOT_ENCRYPT_LABEL _("Do not encrypt password")
#define PASSWORD_HASH_LABEL _("Password hash:")
#define PASSWORD_SHORT_LABEL(min_size_char) yon_char_unite(_("Password must be at least")," ", min_size_char," ",_("characters"))
#define USER_ADD_TITLE_LABEL _("Add user")
#define USER_EDIT_TITLE_LABEL(target) yon_char_unite(_("Edit user")," - ", target,NULL)
#define ADMINISTRATOR_LABEL _("Administrator")
#define USER_NAME_LABEL _("User name:")
#define USER_PASSWORD_LABEL _("User password:")
#define USER_REMOVE_CONFIRM_LABEL(target) yon_char_unite(_("Are you sure you want to remove user")," ",target," ",_("from boot menu users"),"?",NULL)
#define RINGTONE_ADD_TITLE_LABEL _("Add ringtone")
#define RINGTONE_EDIT_TITLE_LABEL(target) yon_char_unite(_("Edit ringtone")," - ", target,NULL)
#define CHOSEN_LABEL _("Chosen")
#define NAME_TEXT_LABEL _("Name:")
#define MELODY_CODE_TEXT_LABEL _("Melody code:")
#define RINGTONE_REMOVE_CONFIRM_LABEL(target) yon_char_unite(_("Are you sure you want to remove ringtone")," ",target,"?",NULL)

@ -1,91 +0,0 @@
#include "ubl-util-standard.h"
#ifndef __cplusplus
#ifndef UBL_GET_STANDARD_UI
#define UBL_GET_STANDARD_UI
inline returnstruct *ubl_make_plugs(GtkWidget *LeftWidget, GtkWidget *RightWidget, int left_plug_id, int right_plug_id){
returnstruct *ret=(returnstruct*)malloc(sizeof(returnstruct*));
if (left_plug_id>0&&LeftWidget){
GtkWidget *plug=gtk_plug_new(left_plug_id);
GtkWidget *toplug=LeftWidget;
if (gtk_widget_get_parent(GTK_WIDGET(toplug))){
g_object_ref(G_OBJECT(toplug));
GtkWidget *parent=gtk_widget_get_parent(toplug);
gtk_container_remove(GTK_CONTAINER(parent),toplug);
gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug));
} else
gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug));
gtk_widget_show(GTK_WIDGET(plug));
ret->plugLeft=plug;
}
if (right_plug_id>0&&RightWidget){
GtkWidget *plug=gtk_plug_new(right_plug_id);
GtkWidget *toplug=RightWidget;
if (gtk_widget_get_parent(GTK_WIDGET(toplug))){
g_object_ref(G_OBJECT(toplug));
GtkWidget *parent=gtk_widget_get_parent(toplug);
gtk_container_remove(GTK_CONTAINER(parent),toplug);
gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug));
} else
gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug));
gtk_widget_show(GTK_WIDGET(plug));
ret->plugRight=plug;
}
return ret;
}
#endif
#else
inline void ubl_make_plugs(Gtk::Widget *LeftWidget, Gtk::Widget *RightWidget, int left_plug_id, int right_plug_id){
if (left_plug_id>0&&LeftWidget){
GtkWidget *plug=gtk_plug_new(left_plug_id);
GtkWidget *toplug=GTK_WIDGET(LeftWidget->gobj());
{GdkScreen *screen = gtk_widget_get_screen(plug);
gtk_widget_set_app_paintable(plug,TRUE);
GdkVisual *colormap = gdk_screen_get_rgba_visual(screen);
gtk_widget_set_visual(plug, colormap);}
{GdkScreen *screen = gtk_widget_get_screen(toplug);
gtk_widget_set_app_paintable(toplug,TRUE);
GdkVisual *colormap = gdk_screen_get_rgba_visual(screen);
gtk_widget_set_visual(toplug, colormap);}
if (gtk_widget_get_parent(GTK_WIDGET(toplug))){
g_object_ref(G_OBJECT(toplug));
GtkWidget *parent=gtk_widget_get_parent(toplug);
gtk_container_remove(GTK_CONTAINER(parent),toplug);
gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug));
} else
gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug));
gtk_widget_show(GTK_WIDGET(plug));
gtk_style_context_add_class(gtk_widget_get_style_context(plug),"bkim");
gtk_style_context_add_class(gtk_widget_get_style_context(toplug),"bkim");
gtk_style_context_add_class(gtk_widget_get_style_context(plug),"primary-toolbar");
}
if (right_plug_id>0&&RightWidget){
GtkWidget *plug=gtk_plug_new(right_plug_id);
GtkWidget *toplug=GTK_WIDGET(RightWidget->gobj());
{GdkScreen *screen = gtk_widget_get_screen(plug);
gtk_widget_set_app_paintable(plug,TRUE);
GdkVisual *colormap = gdk_screen_get_rgba_visual(screen);
gtk_widget_set_visual(plug, colormap);}
{GdkScreen *screen = gtk_widget_get_screen(toplug);
gtk_widget_set_app_paintable(toplug,TRUE);
GdkVisual *colormap = gdk_screen_get_rgba_visual(screen);
gtk_widget_set_visual(toplug, colormap);}
if (gtk_widget_get_parent(GTK_WIDGET(toplug))){
g_object_ref(G_OBJECT(toplug));
GtkWidget *parent=gtk_widget_get_parent(toplug);
gtk_container_remove(GTK_CONTAINER(parent),toplug);
gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug));
} else
gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug));
gtk_widget_show(GTK_WIDGET(plug));
gtk_style_context_add_class(gtk_widget_get_style_context(plug),"bkim");
gtk_style_context_add_class(gtk_widget_get_style_context(toplug),"bkim");
gtk_style_context_add_class(gtk_widget_get_style_context(plug),"primary-toolbar");
}
}
#endif

@ -1,20 +0,0 @@
#ifndef __cplusplus
#include <gtk/gtk.h>
#include <gtk/gtkx.h>
typedef struct {
GtkWidget *plugLeft;
GtkWidget *plugRight;
} returnstruct;
static returnstruct *ubl_make_plugs(GtkWidget *LeftWidget, GtkWidget *RightWidget, int left_plug_id, int right_plug_id);
#else
#include <gtkmm.h>
#include <gtkmm/stock.h>
#include <gtkmm/window.h>
#include <gtkmm/plug.h>
static void ubl_make_plugs(Gtk::Widget *LeftWidget, Gtk::Widget *RightWidget, int left_plug_id, int right_plug_id);
#endif

@ -1,467 +0,0 @@
#include "util.h"
namespace Utils {
array<vector<string>, 5> read_csv(const string& filename) {
array<vector<string>, 5> array_vectors;
vector<string> vec_option;
vector<string> vec_opcision;
ifstream file(filename);
string line;
char delimiter = '|';
getline(file, line);
while (getline(file, line)) {
stringstream stream(line);
string option;
string opcision;
getline(stream, option, delimiter);
string line_local = stream.str();
if (line_local.find("\"") != string::npos) {
string str_delimiter = "\"";
vector<int> point = find_all(line_local, str_delimiter);
size_t len = point.size();
if (len >= 2) {
int index_start = point[len-2];
int index_end = point[len-1];
opcision = line_local.substr(index_start, index_end);
index_end = opcision.find("\"");
if (opcision.find("\"") != string::npos) {
opcision.replace(index_end, opcision.length(), "");
}
}
else {
opcision = "error";
}
}
else{
getline(stream, opcision, delimiter);
}
vec_option.push_back(option);
vec_opcision.push_back(opcision);
}
array_vectors[0] = vec_option;
array_vectors[1] = vec_opcision;
return array_vectors;
}
void write_file(string path_name, string data) {
ofstream fout(path_name, ios_base::out | ios_base::trunc);
if (fout.is_open()) {
fout << data;
fout.close();
}
}
vector<tuple<string, string>> read_csv_melody(const string& filename) {
vector<tuple<string, string>> vec_music;
ifstream file(filename);
string line;
char delimiter = '|';
getline(file, line);
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;
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;
}
vector<int> find_all(string &str_ntp, string substr) {
size_t index = 0;
vector<int> sub_index;
while ((index = str_ntp.find(substr, index)) != std::string::npos) {
index += substr.length();
sub_index.push_back(index);
}
return sub_index;
}
void 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;
i = source.find(to_remove))
source.erase(i, n);
}
void str_replace_all(std::string& str_base, string str_find, string sReplacement)
{
size_t pos = 0, fpos;
while ((fpos = str_base.find(str_find, pos)) != std::string::npos)
{
str_base.replace(fpos, str_find.size(), sReplacement);
pos = fpos + sReplacement.size();
}
}
std::vector<std::string> split(std::string text, char delim) {
std::string line;
std::vector<std::string> vec;
std::stringstream ss(text);
while(std::getline(ss, line, delim)) {
vec.push_back(line);
}
return vec;
}
char *yon_char_new(char *chr)
{
if (chr){
char *newchar = (char*)malloc(strlen(chr) + 1);
memset(newchar, 0, strlen(chr) + 1);
memcpy(newchar, chr, strlen(chr));
return newchar;
} else
return NULL;
}
char *yon_char_append(char *source, char *append)
{
if (source && append)
{
int size = strlen(source) + strlen(append) + 1;
char *final = (char*)malloc(size);
memset(final, 0, size);
// if (strstr(source, "%%"))
// sprintf(final, source, append);
// else
sprintf(final, "%s%s", source, append);
return final;
}
else
return NULL;
}
char *yon_char_unite(char *source, ...){
va_list arglist;
char *new_char=NULL;
char *unite_char=NULL;
new_char=yon_char_new(source);
va_start(arglist,source);
unite_char = va_arg(arglist,char*);
while(unite_char){
new_char = yon_char_append(new_char,unite_char);
unite_char = va_arg(arglist,char*);
}
va_end(arglist);
return new_char;
}
char *yon_char_divide(char *source, int dividepos)
{
if (source&&(int)strlen(source)>=dividepos){
char *cut = (char*)malloc(dividepos + 1);
memset(cut, 0, dividepos + 1);
memcpy(cut, source, dividepos);
char *left = (char*)malloc(strlen(source) - strlen(cut));
memset(left, 0, strlen(source) - strlen(cut));
memcpy(left, source + dividepos + 1, (strlen(source) - dividepos));
memset(source, 0, strlen(source));
memcpy(source, left, strlen(left));
return cut;
}
return NULL;
}
char *yon_char_divide_search(char *source, char *dividepos, int delete_divider)
{
if (delete_divider){};
if (source&&dividepos){
char *cut = strstr(source, dividepos);
if (cut)
{
int leng = strlen(source) - strlen(cut);
cut = yon_char_divide(source, leng);
return cut;
}
}
return source;
}
char **yon_char_parse(char *parameters, int *size, char *divider){
*size=0;
if (parameters){
char **string=NULL;
char *paramline=yon_char_new(parameters);
char *param = strstr(paramline,divider);
for (;param;param=strstr(paramline,divider)){
string = (!string) ? (char **)malloc(sizeof(char*)*((*size)+1)) : (char **)realloc(string, sizeof(char*)*((*size)+1));
string[(*size)]=yon_char_divide(paramline,strlen(paramline)-strlen(param));
*size=(*size)+1;
}
string = (!string) ? (char **)malloc(sizeof(char*)*((*size)+1)) : (char **)realloc(string, sizeof(char*)*((*size)+1));
string[(*size)]=paramline;
(*size)+=1;
return string;
}
return NULL;
}
#define check_window_config_setup if(__yon_window_config_target_window)
typedef struct {
char *parameter_name;
enum YON_TYPE containing_type;
GtkWidget *track_widget;
char *property_name;
} __yon_listener_parameter;
typedef struct {
char *parameter_name;
char *section;
enum YON_TYPE containing_type;
void *property;
} __yon_custom_parameter;
struct {
int x;
int y;
int width;
int height;
int fullscreen;
dictionary *custom_listeners;
dictionary *custom_parameters;
dictionary *deleted_parameters;
} __yon_main_window_config;
static GtkWindow *__yon_window_config_target_window = NULL;
static GKeyFile *__yon_window_config_file = NULL;
static char *__yon_window_config_path = NULL;
void yon_window_config_save();
void yon_window_config_save(){
if (__yon_window_config_path){
g_key_file_set_integer(__yon_window_config_file,"window","WindowPosX",__yon_main_window_config.x);
g_key_file_set_integer(__yon_window_config_file,"window","WindowPosY",__yon_main_window_config.y);
g_key_file_set_integer(__yon_window_config_file,"window","WindowWidth",__yon_main_window_config.width);
g_key_file_set_integer(__yon_window_config_file,"window","WindowHeight",__yon_main_window_config.height);
g_key_file_set_integer(__yon_window_config_file,"window","fullscreen",__yon_main_window_config.fullscreen);
dictionary *dict=NULL;
if (__yon_main_window_config.deleted_parameters)
for_dictionaries(dict,__yon_main_window_config.deleted_parameters){
__yon_custom_parameter *param = yon_dictionary_get_data(dict,__yon_custom_parameter*);
g_key_file_remove_key(__yon_window_config_file,param->section,param->parameter_name,NULL);
}
if (__yon_main_window_config.custom_listeners)
for_dictionaries(dict,__yon_main_window_config.custom_listeners){
__yon_listener_parameter *param = yon_dictionary_get_data(dict,__yon_listener_parameter*);
GValue *val = (GValue*)g_malloc0(sizeof(GValue));
g_object_get_property(G_OBJECT(param->track_widget),param->property_name,val);
switch(param->containing_type){
case YON_TYPE_STRING:
g_key_file_set_string(__yon_window_config_file,"window",param->parameter_name, g_value_get_string(val));
break;
case YON_TYPE_INT:
g_key_file_set_integer(__yon_window_config_file,"window",param->parameter_name, g_value_get_int(val));
break;
case YON_TYPE_BOOLEAN:
g_key_file_set_boolean(__yon_window_config_file,"window",param->parameter_name, g_value_get_boolean(val));
break;
case YON_TYPE_STRING_LIST:break;
case YON_TYPE_OTHER:printf("\033[0;31mCannot save %s property with %s key\033[0m\n",param->property_name,param->parameter_name);break;
}
}
if (__yon_main_window_config.custom_parameters)
for_dictionaries(dict,__yon_main_window_config.custom_parameters){
__yon_custom_parameter *param = yon_dictionary_get_data(dict,__yon_custom_parameter*);
switch (param->containing_type){
case YON_TYPE_STRING:
g_key_file_set_string(__yon_window_config_file,param->section,param->parameter_name, (char*)param->property);
break;
case YON_TYPE_INT:
g_key_file_set_integer(__yon_window_config_file,param->section,param->parameter_name, *(int*)param->property);
break;
case YON_TYPE_BOOLEAN:
g_key_file_set_boolean(__yon_window_config_file,param->section,param->parameter_name, *(gboolean*)param->property);
break;
case YON_TYPE_STRING_LIST:break;
default:
break;
}
}
g_key_file_save_to_file(__yon_window_config_file,__yon_window_config_path,NULL);
}
}
void yon_get_is_fullscreen();
void yon_get_is_fullscreen(){
gtk_window_is_maximized(__yon_window_config_target_window);
__yon_main_window_config.fullscreen = gtk_window_is_maximized(__yon_window_config_target_window);
if (!__yon_main_window_config.fullscreen) gtk_window_get_position(__yon_window_config_target_window,&__yon_main_window_config.x,&__yon_main_window_config.y);
}
/**yon_on_configured_window_destroy(GtkWidget* self,GdkEvent* event)
* [EN]
*
* [RU]
* Сохраняет настройки основного окна. Вызывается когда основное окно уничтожается.
*/
void yon_on_configured_window_destroy(GtkWidget* self,GdkEvent* event);
void yon_on_configured_window_destroy(GtkWidget* self,GdkEvent* event){
if (self&&event){};
check_window_config_setup{
yon_get_is_fullscreen();
yon_window_config_save();
}
exit(0);
}
void __yon_window_config_on_resize();
void __yon_window_config_on_resize(){
int max=0;
max=gtk_window_is_maximized(__yon_window_config_target_window);
if(max==0){
gtk_window_get_size(__yon_window_config_target_window,&__yon_main_window_config.width,&__yon_main_window_config.height);
gtk_window_get_position(__yon_window_config_target_window,&__yon_main_window_config.x,&__yon_main_window_config.y);
}
}
void yon_window_config_setup(GtkWindow *window){
__yon_window_config_target_window = window;
g_signal_connect(G_OBJECT(window),"delete-event",G_CALLBACK(yon_on_configured_window_destroy),NULL);
g_signal_connect(G_OBJECT(window),"check-resize"/*"configure-event"*/,G_CALLBACK(__yon_window_config_on_resize),NULL);
}
void *_yon_maximize(void *data);
void *_yon_maximize(void *data){
if (data){};
g_usleep(G_USEC_PER_SEC/10);
if(__yon_main_window_config.fullscreen ==1) gtk_window_maximize(__yon_window_config_target_window);
return NULL;
}
int yon_window_config_load(char *path){
if(__yon_window_config_target_window){
if (!access(path,0)){
__yon_window_config_file = g_key_file_new();
__yon_window_config_path=yon_char_new(path);
if (!g_key_file_load_from_file(__yon_window_config_file,__yon_window_config_path,G_KEY_FILE_NONE,NULL)){
struct stat st;
int size;
config_str conf = yon_char_parse(yon_char_new(__yon_window_config_path),&size,(char*)"/");
char *path = yon_char_unite(conf[0],(char*)"/",conf[1],(char*)"/",conf[2],(char*)"/",conf[3],(char*)"/",conf[4],(char*)"/",NULL);
if (stat(path, &st) == -1) {
mkdir(path, 0777);
}
FILE *fp;
fp=fopen(__yon_window_config_path,"w");
chmod(__yon_window_config_path,0777);
fclose(fp);
g_key_file_load_from_file(__yon_window_config_file,__yon_window_config_path,G_KEY_FILE_NONE,NULL);
}
__yon_main_window_config.x = g_key_file_get_integer(__yon_window_config_file,"window","WindowPosX",NULL);
__yon_main_window_config.y = g_key_file_get_integer(__yon_window_config_file,"window","WindowPosY",NULL);
__yon_main_window_config.width = g_key_file_get_integer(__yon_window_config_file,"window","WindowWidth",NULL);
__yon_main_window_config.height = g_key_file_get_integer(__yon_window_config_file,"window","WindowHeight",NULL);
__yon_main_window_config.fullscreen = g_key_file_get_integer(__yon_window_config_file,"window","fullscreen",NULL);
dictionary *dict=NULL;
if (__yon_main_window_config.custom_listeners)
for_dictionaries(dict,__yon_main_window_config.custom_listeners){
__yon_listener_parameter *param = yon_dictionary_get_data(dict,__yon_listener_parameter*);
GValue *val = (GValue*)g_malloc0(sizeof(GValue));
g_object_get_property(G_OBJECT(param->track_widget),param->property_name,val);
gboolean res=0;
switch(param->containing_type){
case YON_TYPE_STRING:
g_value_set_string(val,g_key_file_get_string(__yon_window_config_file,"window",param->parameter_name, NULL));
break;
case YON_TYPE_INT:
g_value_set_int(val,g_key_file_get_integer(__yon_window_config_file,"window",param->parameter_name, NULL));
break;
case YON_TYPE_BOOLEAN:
res = g_key_file_get_boolean(__yon_window_config_file,"window",param->parameter_name, NULL);
g_value_set_boolean(val,res);
break;
case YON_TYPE_STRING_LIST:break;
case YON_TYPE_OTHER:break;
}
g_object_set_property(G_OBJECT(param->track_widget),param->property_name,val);
}
if (__yon_main_window_config.width==0) __yon_main_window_config.width=800;
if (__yon_main_window_config.height==0) __yon_main_window_config.height=600;
gtk_window_resize(__yon_window_config_target_window,__yon_main_window_config.width,__yon_main_window_config.height);
gtk_window_move(__yon_window_config_target_window,__yon_main_window_config.x,__yon_main_window_config.y);
pthread_t tid;
pthread_create(&tid, NULL, (&_yon_maximize), NULL);
return 1;
}
}
return 0;
}
void yon_window_config_apply();
void yon_window_config_apply(){
gtk_window_move(__yon_window_config_target_window,__yon_main_window_config.x,__yon_main_window_config.y);
gtk_window_resize(__yon_window_config_target_window,__yon_main_window_config.width,__yon_main_window_config.height);
}
config_str yon_window_config_get_section(char *section, gsize *size){
config_str key = g_key_file_get_keys(__yon_window_config_file,section,size,NULL);
return key;
}
char *yon_ubl_user_get_home_directory(){
FILE *path = popen(get_home_dir_command,"r");
char *ret = (char*)malloc(4096);
memset(ret,0,4096);
if (fgets(ret,4096,path)){
ret=yon_char_divide_search(ret,(char*)"\n",-1);
return ret;
} else return NULL;
}
char *yon_ubl_root_user_get(){
char *user=NULL;
if (yon_ubl_check_root()){
user=getenv("SUDO_USER");
if (user&&strcmp(user,"")!=0){
return user;
}else {
FILE *file = popen("getent passwd $PKEXEC_UID | cut -d: -f1","r");
user=(char*)malloc(4096);
memset(user,0,4096);
if (fgets(user,4096,file)){
user=yon_char_divide_search(user,(char*)"\n",-1);
if (user) return user;
} else return NULL;
}
}
return getlogin();
}
int yon_ubl_check_root(){
if (getuid()==0) return 1;
else return 0;
}
}

@ -1,139 +0,0 @@
#ifndef UTIL_H
#define UTIL_H
#include <stdio.h>
#include <tuple>
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
#include <array>
#include <vector>
#include <linux/limits.h>
#include <sys/types.h>
#include <pwd.h>
#include <unistd.h>
#include <iostream>
#include <map>
#include <string>
#include <array>
#include <vector>
#include <fstream>
#include <filesystem>
#include <stdio.h>
#include <map>
#include <pwd.h>
#include <set>
#include <gtkmm.h>
#include <gtk/gtk.h>
#include <sys/stat.h>
using namespace std;
namespace Utils {
#define get_home_dir_command yon_char_unite((char*)"getent passwd \"",yon_ubl_root_user_get(),(char*)"\" | cut -d: -f6",NULL)
template<typename Type>
struct Result{
Type response;
int error;
};
struct Passwd {
string user;
int uid;
};
std::array<std::vector<std::string>, 5> read_csv(const std::string& filename);
std::string call(std::string cmd);
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);
vector<tuple<string, string>> read_csv_melody(const string& filename);
void write_file(string path_name, string data);
#define for_dictionaries(element, stack) for (element = stack->first; element != NULL; element = element->next)
#define yon_dictionary_get_data(dictionary, type) ((type)dictionary->data)
typedef enum
{
DICTIONARY_GTK_WIDGETS_TYPE,
DICTIONARY_OTHER_TYPE=0,
DICTIONARY_CHAR_TYPE,
DICTIONARY_INT_TYPE,
DICTIONARY_BOOL_TYPE,
} DICT_TYPE;
typedef struct dictionary
{
char *key;
void *data;
struct dictionary *next;
struct dictionary *prev;
struct dictionary *first;
DICT_TYPE data_type;
} dictionary;
typedef char** config_str;
char *yon_char_divide(char *source, int dividepos);
char *yon_char_divide_search(char *source, char *dividepos, int delete_divider);
char *yon_char_new(char *chr);
char *yon_char_append(char *source, char *append);
char *yon_char_unite(char *source, ...);
char **yon_char_parse(char *parameters, int *size, char *divider);
/**YON_TYPE
* [EN]
*
* [RU]
* Типы, поддерживаемые функциями сохранения/загрузки конфигурации утилиты
*/
enum YON_TYPE{
YON_TYPE_STRING,
YON_TYPE_STRING_LIST,
YON_TYPE_INT,
YON_TYPE_BOOLEAN,
YON_TYPE_OTHER};
/**yon_window_config_setup(GtkWindow *window)
* [EN]
*
* [RU]
* Устанавливает указатель на окно для отслеживания его положения и размера
*/
void yon_window_config_setup(GtkWindow *window);
/**yon_window_config_load(char *path)
* [EN]
*
* [RU]
* Загружает конфиг окна и инициализирует отслеживание его параметров
*/
int yon_window_config_load(char *path);
/**yon_window_config_get_section(char *section, gsize *size)
* [EN]
*
* [RU]
* Возвращает все параметры раздела [section] конфига утилиты и записывает в [size] количество считанных параметров.
*/
config_str yon_window_config_get_section(char *section, gsize *size);
char *yon_ubl_user_get_home_directory();
char *yon_ubl_root_user_get();
int yon_ubl_check_root();
}
#endif

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-bootloader">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-bootloader.css -->
<object class="GtkBox" id="MenuItemBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkButton" id="MenuButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="MenuTextLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">label</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkMenuButton" id="NextIconButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="focus-on-click">False</property>
<property name="receives-default">True</property>
<property name="popup">menu1</property>
<property name="direction">right</property>
<child>
<placeholder/>
</child>
<style>
<class name="thin"/>
<class name="noborder"/>
<class name="nobackground"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<style>
<class name="noborder"/>
<class name="menunoborder"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<object class="GtkMenu" id="menu1">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
</interface>

@ -0,0 +1,203 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-bootloader">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-bootloader.css -->
<object class="GtkWindow" id="MainWindow">
<property name="width-request">450</property>
<property name="height-request">250</property>
<property name="can-focus">False</property>
<property name="resizable">False</property>
<property name="modal">True</property>
<property name="default-width">450</property>
<property name="icon-name">com.ublinux.ubl-settings-bootloader</property>
<property name="skip-taskbar-hint">True</property>
<property name="skip-pager-hint">True</property>
<property name="decorated">False</property>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label-xalign">0</property>
<property name="shadow-type">in</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">5</property>
<property name="margin-bottom">5</property>
<child>
<object class="GtkRevealer" id="ItemsRevealer">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="transition-type">none</property>
<property name="reveal-child">True</property>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="hscrollbar-policy">never</property>
<property name="min-content-height">50</property>
<property name="max-content-height">200</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkListBox" id="ItemsListBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="selection-mode">none</property>
<child type="placeholder">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">OS options were not found</property>
<style>
<class name="workingbg"/>
</style>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<style>
<class name="workingbg"/>
</style>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkRevealer" id="ChildrenRevealer">
<property name="can-focus">False</property>
<property name="transition-type">none</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkButton" id="BackButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkMenuButton" id="NextIconButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="focus-on-click">False</property>
<property name="receives-default">True</property>
<property name="direction">left</property>
<child>
<placeholder/>
</child>
<style>
<class name="thin"/>
<class name="noborder"/>
<class name="nobackground"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="MenuTextLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Back</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<style>
<class name="noborder"/>
<class name="menunoborder"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="hscrollbar-policy">never</property>
<property name="min-content-height">50</property>
<property name="max-content-height">175</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkListBox" id="ChildrenListBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="selection-mode">none</property>
<child type="placeholder">
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Children options were not found</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<style>
<class name="workingbg"/>
</style>
</object>
</child>
<child type="label_item">
<placeholder/>
</child>
</object>
</child>
<style>
<class name="workingbg"/>
</style>
</object>
</interface>

@ -0,0 +1,285 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-bootloader">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-bootloader.css -->
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups.cancel-symbolic</property>
</object>
<object class="GtkImage" id="image5">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups.accept-symbolic</property>
</object>
<object class="GtkWindow" id="MainWindow">
<property name="width-request">450</property>
<property name="height-request">250</property>
<property name="can-focus">False</property>
<property name="resizable">False</property>
<property name="modal">True</property>
<property name="default-width">450</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="StatusBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="PasswordBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Password:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="PasswordEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="visibility">False</property>
<property name="invisible-char">*</property>
<property name="truncate-multiline">True</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.view-symbolic</property>
<property name="placeholder-text" translatable="yes">********</property>
<property name="input-purpose">password</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Repeat password:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="RepeatPasswordEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="visibility">False</property>
<property name="invisible-char">*</property>
<property name="truncate-multiline">True</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.view-symbolic</property>
<property name="placeholder-text" translatable="yes">********</property>
<property name="input-purpose">password</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox" id="HashBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkSeparator">
<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">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="NoEncriptionCheck">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Password hash:</property>
<property name="xalign">0</property>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="PasswordHashEntry">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="visibility">False</property>
<property name="invisible-char">*</property>
<property name="secondary-icon-name">com.ublinux.ubl-settings-usergroups.view-symbolic</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</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>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child type="title">
<object class="GtkLabel" id="userTitleNameLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Password input</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkButton" id="UserCancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image4</property>
<style>
<class name="button"/>
<class name="marginright"/>
</style>
</object>
</child>
<child>
<object class="GtkButton" id="UserOkButton">
<property name="label" translatable="yes">Accept</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image5</property>
<style>
<class name="button"/>
<class name="marginright"/>
</style>
</object>
<packing>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkSizeGroup">
<widgets>
<widget name="label3"/>
<widget name="label2"/>
</widgets>
</object>
</interface>

@ -0,0 +1,203 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-bootloader">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-bootloader.css -->
<object class="GtkWindow" id="MainWindow">
<property name="width-request">450</property>
<property name="height-request">250</property>
<property name="can-focus">False</property>
<property name="resizable">False</property>
<property name="modal">True</property>
<property name="default-width">450</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="StatusBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="ChooseCheck">
<property name="label" translatable="yes">Chosen</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Name:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="NameEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Melody code:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="CodeEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="invisible-char">*</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</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>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child type="title">
<object class="GtkLabel" id="TitleLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Add ringtone</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image4</property>
<style>
<class name="button"/>
<class name="marginright"/>
</style>
</object>
</child>
<child>
<object class="GtkButton" id="AcceptButton">
<property name="label" translatable="yes">Accept</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image5</property>
<style>
<class name="button"/>
<class name="marginright"/>
</style>
</object>
<packing>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkSizeGroup">
<widgets>
<widget name="label1"/>
<widget name="label2"/>
</widgets>
</object>
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups.cancel-symbolic</property>
</object>
<object class="GtkImage" id="image5">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups.accept-symbolic</property>
</object>
</interface>

@ -0,0 +1,222 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-bootloader">
<requires lib="gtk+" version="3.24"/>
<!-- interface-css-provider-path ubl-settings-bootloader.css -->
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">document-edit-symbolic</property>
</object>
<object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups.cancel-symbolic</property>
</object>
<object class="GtkImage" id="image5">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups.accept-symbolic</property>
</object>
<object class="GtkWindow" id="MainWindow">
<property name="width-request">450</property>
<property name="height-request">250</property>
<property name="can-focus">False</property>
<property name="resizable">False</property>
<property name="modal">True</property>
<property name="default-width">450</property>
<property name="icon-name">com.ublinux.ubl-settings-usergroups</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-bottom">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkBox" id="StatusBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkCheckButton" id="AdminCheck">
<property name="label" translatable="yes">Administrator</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="draw-indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">User name:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="UsernameEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">User password:</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="PasswordEntry">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="visibility">False</property>
<property name="invisible-char">*</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="PasswordButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image1</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>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child type="title">
<object class="GtkLabel" id="TitleLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Add user</property>
<attributes>
<attribute name="weight" value="bold"/>
</attributes>
</object>
</child>
<child>
<object class="GtkButton" id="CancelButton">
<property name="label" translatable="yes">Cancel</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image4</property>
<style>
<class name="button"/>
<class name="marginright"/>
</style>
</object>
</child>
<child>
<object class="GtkButton" id="AcceptButton">
<property name="label" translatable="yes">Accept</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="image">image5</property>
<style>
<class name="button"/>
<class name="marginright"/>
</style>
</object>
<packing>
<property name="pack-type">end</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkSizeGroup">
<widgets>
<widget name="label1"/>
<widget name="label2"/>
</widgets>
</object>
</interface>

@ -1,84 +1,71 @@
.textHead{ .thin {
text-shadow: 2px 2px @theme_bg_color; margin:0px;
color: @theme_text_color; padding:0px;
}
.boxInfoMessError{
background-color: #ea9999;
}
.boxInfoMessOK{
background-color: #f3f0ac;
} }
.bannerbackground { .noborder {
background-color: #404040; border:none;
} }
.view_app { .borders {
background-color: @theme_bg_color; border:1px;
} }
.view_app.view.cell:selected { .nobackground {
background-color:@theme_selected_bg_color; background:transparent;
color:@theme_selected_text_color;
transition: 10ms ease-out;
border-radius: 3px;
} }
#GnomeIcon{ .nobackground:active {
border-style:solid; background:transparent;
border-bottom-width: 1px;
border-image: linear-gradient(90deg, alpha(@theme_text_color,0.4) 55%, alpha(@theme_bg_color, 0) 100%);
border-image-slice: 1;
} }
.textHead{
#SepIcon{ text-shadow: 2px 2px @theme_bg_color;
background-color: alpha(@theme_text_color, 0.6); color: @theme_text_color;
} }
#iconlabel { .inherited>* {
font-size:14px;
font-weight: bold;
}
.roundborder * {
border-width:0px;
border-radius:5px;
}
.noborder {
border:none; border:none;
background:inherit;
} }
.menu:hover { .workingbg {
border-color:alpha(@theme_text_color, 0.01); background:@theme_base_color;
}
.menu {
border-color:alpha(@theme_text_color, 0.01);
}
.menu:hover >* {
border-color:alpha(@theme_text_color, 0.01);
} }
.menuitembottom{ .menuitembottom{
margin-top:0px; margin-top:0px;
margin-bottom:3px; margin-bottom:3px;
border-color:inherit;
border-left-width:inherit;
border-right-width:inherit;
} }
.menuitemmiddle{ .menuitemmiddle{
margin-top:0px; margin-top:0px;
margin-bottom:0px; margin-bottom:0px;
border-color:inherit;
border-left-width:inherit;
border-right-width:inherit;
} }
.menuitemtop{ .menuitemtop{
margin-bottom:0px; margin-bottom:0px;
border-color:inherit;
border-top-width:inherit;
border-left-width:inherit;
border-right-width:inherit;
} }
.menuitemtop *{ .menuitemtop >*{
margin:2px 2px 0 2px; margin:4px 2px 0 2px;
padding: 5px 10px 3px 5px; padding: 3px 10px 3px 5px;
border:transparent;
} }
.menuitemmiddle *{ .menuitemmiddle >*{
margin:0 2px 0 2px; margin:0 2px 0 2px;
padding: 3px 10px 3px 5px; padding: 3px 10px 3px 5px;
border:transparent;
} }
.menuitembottom *{ .menuitembottom >*{
margin:0 2px 2px 2px; margin:0 2px 2px 2px;
padding: 3px 10px 5px 5px; padding: 3px 10px 3px 5px;
} }
.menuitemtop:hover { .menuitemtop:hover {
background:@theme_bg_color; background:@theme_bg_color;
border-color:inherit; border-color:inherit;
border-top-width:inherit;
border-left-width:inherit; border-left-width:inherit;
border-right-width:inherit; border-right-width:inherit;
} }
@ -91,76 +78,80 @@
.menuitembottom:hover { .menuitembottom:hover {
background:@theme_bg_color; background:@theme_bg_color;
border-color:inherit; border-color:inherit;
border-bottom-width:0px;
border-left-width:inherit; border-left-width:inherit;
border-right-width:inherit; border-right-width:inherit;
} }
.menuitemtop:hover* { .menuitemtop:hover>* {
margin:2px 2px 0 2px; margin:4px 2px 0 2px;
padding: 5px 10px 3px 5px; padding: 3px 10px 3px 5px;
background:@theme_selected_bg_color; background:@theme_selected_bg_color;
border-radius:2px; border-radius:2px;
} }
.menuitemmiddle:hover* { .menuitemmiddle:hover>* {
margin:0 2px 0 2px; margin:0 2px 0 2px;
padding: 3px 10px 3px 5px; padding: 3px 10px 3px 5px;
background:@theme_selected_bg_color; background:@theme_selected_bg_color;
border-radius:2px; border-radius:2px;
} }
.menuitembottom:hover* { .menuitembottom:hover>* {
margin:0 2px 2px 2px; margin:0 2px 2px 2px;
padding: 3px 10px 5px 5px; padding: 3px 10px 3px 5px;
background:@theme_selected_bg_color; background:@theme_selected_bg_color;
border-radius:2px; border-radius:2px;
} }
.boxInfoMessError{
.workingbg, #workingbg { background-color: #ea9999;
background-color:@theme_base_color;
}
.workingbg.view.cell:selected {
background-color:@theme_selected_bg_color;
}
.workingbg.view.cell:hover {
background-color:darker(@theme_selected_bg_color);
color:@theme_selected_text_color;
border-radius:3px;
} }
.bkim {
transition: 200ms ease-out; .boxInfoMessOK{
background-image: none; background-color: #f3f0ac;
} }
.noborder{ .errorBox {
border:none; border-width: 2px;
border-color: #ea9999;
border-style:solid;
} }
.bkim{ .chosenOutline{
opacity:0.99; transition: 0ms;
border:none; border-width: 1px;
border-color: #f3f0ac;
border-style:solid;
} }
.bkim_no_plug{ .separatorTop{
background-color: transparent; border-color: darker (@theme_bg_color);
opacity:0.99; border-top-width:1px;
} border-style:solid;
.thin{
margin:0px;
padding: 0px;
} }
.nobg{
background: none; .separatorBottom{
border-color: darker (@theme_bg_color);
border-bottom-width:1px;
border-style:solid;
} }
.addbg * {
background-color: @theme_bg_color; .marginright image{
margin-right: 2px;
} }
.addbg_revealer * { .menunoborder {
background-color: @theme_base_color; border-radius: 0;
border:none;
} }
.offset_revealer{
border-width: 1px; .menunoborder:active {
border-style: solid; border-radius: 0;
border-color: @theme_text_color; border:none;
} }
.bultar {
.menunoborder:hover {
border-radius: 0;
border:none; border:none;
} }
treeview row:nth-child(odd) { background-color: #000000; }
treeview row:nth-child(even) { background-color: #ffffff; }

File diff suppressed because it is too large Load Diff

@ -17,695 +17,306 @@ 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 "Edit" #: source/ubl-strings.h:2
msgstr "" msgid "System boot"
msgid "Adding"
msgstr ""
msgid "Selecting the loading mode option"
msgstr ""
msgid "Add user"
msgstr ""
msgid "Delete user"
msgstr ""
msgid "Add melody"
msgstr ""
msgid "No loading animation, full log"
msgstr "" msgstr ""
msgid "Lack of loading animation with the output of the abbreviated log" #: source/ubl-strings.h:3
msgid "Configuring system boot parameters"
msgstr "" msgstr ""
msgid "Delete melody" #: source/ubl-strings.h:5
msgstr "Удалить мелодию" msgid "Boot menu"
msgid "Melody added"
msgstr "" msgstr ""
msgid "User added" #: source/ubl-strings.h:6
msgid "Boot selection menu timer:"
msgstr "" msgstr ""
msgid "Melody deleted" #: source/ubl-strings.h:7
msgid "seconds"
msgstr "" msgstr ""
msgid "User deleted" #: source/ubl-strings.h:8
msgid "Default"
msgstr "" msgstr ""
msgid "Enter the name and code of the tune in the \"Ringtone at startup\" field" #: source/ubl-strings.h:9
msgid "Default OS:"
msgstr "" msgstr ""
msgid "Enter name and password in the \"Boot Menu Users\" field" #: source/ubl-strings.h:10
msgid "Load screen display mode:"
msgstr "" msgstr ""
#: source/ubl-strings.h:11
msgid "Boot Menu Users" msgid "Boot Menu Users"
msgstr "" msgstr ""
msgid "Title" #: source/ubl-strings.h:12
msgstr "" msgid "Startup ringtone"
msgid ""
msgstr ""
msgid "Password"
msgstr ""
msgid "Administrator"
msgstr "" msgstr ""
msgid "Select" #: source/ubl-strings.h:13
msgstr "" msgid "Parameters passed to the kernel"
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"
msgstr ""
#: source/ubl-settings-bootloader.h:44 source/ubl-settings-bootloader.h:43
msgid "About System boot"
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
msgid "Active"
msgstr ""
#: source/ubl-settings-bootloader.h:63 source/ubl-settings-bootloader.h:62
msgid "Always redirect"
msgstr ""
#: source/ubl-settings-bootloader.h:96 source/ubl-settings-bootloader.h:95
msgid "Argument not recognized\n"
msgstr ""
#: source/ubl-settings-bootloader.h:66 source/ubl-settings-bootloader.h:65
msgid "Boot menu user name:"
msgstr ""
#: source/ubl-settings-bootloader.h:67 source/ubl-settings-bootloader.h:66
msgid "Boot menu user password:"
msgstr ""
#: source/ubl-settings-bootloader.h:64 source/ubl-settings-bootloader.h:63
msgid "Boot screen display mode:"
msgstr ""
#: source/ubl-settings-bootloader.h:51 source/ubl-settings-bootloader.h:50
msgid "Boot selection menu timer:"
msgstr ""
#: source/ubl-settings-bootloader.h:62 source/ubl-settings-bootloader.h:61
msgid "Cancel"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:45 source/ubl-settings-bootloader.h:44 #: source/ubl-strings.h:14
#: source/ubl-settings-bootloader.cc:421 source/ubl-settings-bootloader.cc:422
#: source/ubl-settings-bootloader.cc:423 source/ubl-settings-bootloader.cc:289
#: source/ubl-settings-bootloader.cc:290 source/ubl-settings-bootloader.cc:291
msgid "Command line parameters:" msgid "Command line parameters:"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:42 source/ubl-settings-bootloader.h:41 #: source/ubl-strings.h:15
#: source/ubl-settings-bootloader.cc:417 source/ubl-settings-bootloader.cc:285
msgid "Configuring system boot parameters"
msgstr ""
msgid "Configuring the boot loader settings"
msgstr ""
#: source/ubl-settings-bootloader.h:38 source/ubl-settings-bootloader.h:37
#: source/ubl-settings-bootloader.cc:411 source/ubl-settings-bootloader.cc:279
msgid "Copyright © UBSoft LLC, 2022 - "
msgstr ""
#: source/ubl-settings-bootloader.cc:292
msgid "Default download"
msgstr ""
#: source/ubl-settings-bootloader.h:94 source/ubl-settings-bootloader.h:93
#: source/ubl-settings-bootloader.cc:339 source/ubl-settings-bootloader.cc:201
msgid "Description"
msgstr ""
msgid "Disable ACPI"
msgstr ""
msgid "Disable APIC"
msgstr ""
msgid "Disable GPU power management"
msgstr ""
msgid "Disable Plymouth"
msgstr ""
msgid "Disable kernel selection and loading of video drivers"
msgstr ""
msgid "Disable local APIC"
msgstr ""
#: source/ubl-settings-bootloader.h:48 source/ubl-settings-bootloader.h:47
#: source/ubl-settings-bootloader.cc:426 source/ubl-settings-bootloader.cc:294
msgid "Download menu"
msgstr ""
msgid "Downloading without text messages"
msgstr ""
msgid "Eliminates flickering laptop display on Ultra Voltage processors"
msgstr ""
#: source/ubl-settings-bootloader.h:78 source/ubl-settings-bootloader.h:77
#: source/ubl-settings-bootloader.cc:496
msgid "Enter login"
msgstr ""
#: source/ubl-settings-bootloader.h:77 source/ubl-settings-bootloader.h:76
#: source/ubl-settings-bootloader.cc:476
msgid "Enter your password"
msgstr ""
#: source/ubl-settings-bootloader.h:84 source/ubl-settings-bootloader.h:83
#: source/ubl-settings-bootloader.cc:897 source/ubl-settings-bootloader.cc:443
msgid "Error saved local and global configuration"
msgstr ""
msgid "Forced selection of an Intel sound device driver"
msgstr ""
msgid ""
"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"
msgstr ""
#: source/ubl-settings-bootloader.h:95 source/ubl-settings-bootloader.h:94
msgid ""
"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"
msgstr ""
#: source/ubl-settings-bootloader.h:86 source/ubl-settings-bootloader.h:85
#: source/ubl-settings-bootloader.cc:911 source/ubl-settings-bootloader.cc:455
msgid "Global configuration downloaded successfully"
msgstr ""
#: source/ubl-settings-bootloader.h:81 source/ubl-settings-bootloader.h:80
#: source/ubl-settings-bootloader.cc:885 source/ubl-settings-bootloader.cc:431
msgid "Global configuration read error"
msgstr ""
#: source/ubl-settings-bootloader.h:88 source/ubl-settings-bootloader.h:87
#: source/ubl-settings-bootloader.cc:917 source/ubl-settings-bootloader.cc:461
msgid "Global configuration successfully written"
msgstr ""
#: source/ubl-settings-bootloader.h:83 source/ubl-settings-bootloader.h:82
#: source/ubl-settings-bootloader.cc:893 source/ubl-settings-bootloader.cc:439
msgid "Global configuration write error"
msgstr ""
#: source/ubl-settings-bootloader.h:52 source/ubl-settings-bootloader.h:51
#: source/ubl-settings-bootloader.cc:430 source/ubl-settings-bootloader.cc:300
msgid "Help"
msgstr ""
#: source/ubl-settings-bootloader.cc:295
msgid "Input terminal" msgid "Input terminal"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:75 source/ubl-settings-bootloader.h:74 #: source/ubl-strings.h:16
#: source/ubl-settings-bootloader.cc:451
msgid "Lack of loading animation with the output of the abbreviated log"
msgstr ""
msgid "Last Successful Download"
msgstr ""
#: source/ubl-settings-bootloader.h:68 source/ubl-settings-bootloader.h:67
#: source/ubl-settings-bootloader.cc:452
msgid "Last successful upload"
msgstr ""
#: source/ubl-settings-bootloader.h:55 source/ubl-settings-bootloader.h:54
#: source/ubl-settings-bootloader.cc:438 source/ubl-settings-bootloader.cc:308
msgid "Load"
msgstr ""
#: source/ubl-settings-bootloader.h:46 source/ubl-settings-bootloader.h:45
#: source/ubl-settings-bootloader.cc:424
msgid "Load default:"
msgstr ""
#: source/ubl-settings-bootloader.h:59 source/ubl-settings-bootloader.h:58
#: source/ubl-settings-bootloader.cc:435 source/ubl-settings-bootloader.cc:305
msgid "Load global configuration"
msgstr ""
#: source/ubl-settings-bootloader.h:60 source/ubl-settings-bootloader.h:59
#: source/ubl-settings-bootloader.cc:436 source/ubl-settings-bootloader.cc:306
msgid "Load local configuration"
msgstr ""
#: source/ubl-settings-bootloader.cc:442
msgid "Load menu user name:"
msgstr ""
#: source/ubl-settings-bootloader.cc:443
msgid "Load menu user password:"
msgstr ""
#: source/ubl-settings-bootloader.cc:429 source/ubl-settings-bootloader.cc:298
msgid "Load option timer"
msgstr ""
#: source/ubl-settings-bootloader.cc:441
msgid "Load screen display mode:"
msgstr ""
#: source/ubl-settings-bootloader.h:73 source/ubl-settings-bootloader.h:72
#: source/ubl-settings-bootloader.cc:448
msgid "Loading animation with log"
msgstr ""
#: source/ubl-settings-bootloader.h:74 source/ubl-settings-bootloader.h:73
#: source/ubl-settings-bootloader.cc:449
msgid "Loading animation without log"
msgstr ""
#: source/ubl-settings-bootloader.h:85 source/ubl-settings-bootloader.h:84
#: source/ubl-settings-bootloader.cc:908 source/ubl-settings-bootloader.cc:452
msgid "Local configuration downloaded successfully"
msgstr ""
#: source/ubl-settings-bootloader.h:80 source/ubl-settings-bootloader.h:79
#: source/ubl-settings-bootloader.cc:881 source/ubl-settings-bootloader.cc:427
msgid "Local configuration reading error"
msgstr ""
#: source/ubl-settings-bootloader.h:87 source/ubl-settings-bootloader.h:86
#: source/ubl-settings-bootloader.cc:914 source/ubl-settings-bootloader.cc:458
msgid "Local configuration successfully written"
msgstr ""
#: source/ubl-settings-bootloader.h:82 source/ubl-settings-bootloader.h:81
#: source/ubl-settings-bootloader.cc:889 source/ubl-settings-bootloader.cc:435
msgid "Local configuration write error"
msgstr ""
#: source/ubl-settings-bootloader.cc:445 source/ubl-settings-bootloader.cc:447
msgid "Manually"
msgstr ""
msgid "Maximum performance, power management"
msgstr ""
#: source/ubl-settings-bootloader.h:65 source/ubl-settings-bootloader.h:64
msgid "No loading animation, full log"
msgstr ""
#: source/ubl-settings-bootloader.cc:444 source/ubl-settings-bootloader.cc:446
msgid "Not available"
msgstr ""
#: source/ubl-settings-bootloader.h:90 source/ubl-settings-bootloader.h:89
#: source/ubl-settings-bootloader.cc:923 source/ubl-settings-bootloader.cc:341
#: source/ubl-settings-bootloader.cc:354 source/ubl-settings-bootloader.cc:367
msgid "Nothing to save!"
msgstr ""
msgid "Open Firmware Console"
msgstr ""
#: source/ubl-settings-bootloader.h:93 source/ubl-settings-bootloader.h:92
#: source/ubl-settings-bootloader.cc:338 source/ubl-settings-bootloader.cc:200
msgid "Option"
msgstr ""
msgid "Output in graphical mode"
msgstr ""
#: source/ubl-settings-bootloader.cc:296
msgid "Output terminal" msgid "Output terminal"
msgstr "" msgstr ""
msgid "PC AT Keyboard (Coreboot)" #: source/ubl-strings.h:18 source/ubl-strings.h:55
msgstr "" msgid "Administrator"
msgid "PC BIOS & EFI console"
msgstr ""
msgid "Parameters passed to the kernel"
msgstr ""
msgid "Prevents the processor from going into a deep sleep state"
msgstr ""
#: source/ubl-settings-bootloader.h:41 source/ubl-settings-bootloader.h:40
#: source/ubl-settings-bootloader.cc:416 source/ubl-settings-bootloader.cc:420
#: source/ubl-settings-bootloader.cc:284 source/ubl-settings-bootloader.cc:288
msgid "Project homepage"
msgstr ""
#: source/ubl-settings-bootloader.h:61 source/ubl-settings-bootloader.h:60
msgid "Read online"
msgstr ""
#: source/ubl-settings-bootloader.h:54 source/ubl-settings-bootloader.h:53
#: source/ubl-settings-bootloader.cc:437 source/ubl-settings-bootloader.cc:307
msgid "Save"
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"
msgstr ""
#: source/ubl-settings-bootloader.h:57 source/ubl-settings-bootloader.h:56
#: source/ubl-settings-bootloader.cc:433 source/ubl-settings-bootloader.cc:303
msgid "Save in local configuration"
msgstr ""
#: source/ubl-settings-bootloader.h:56 source/ubl-settings-bootloader.h:55
#: source/ubl-settings-bootloader.cc:432 source/ubl-settings-bootloader.cc:302
msgid "Save configuration"
msgstr ""
#: source/ubl-settings-bootloader.cc:293
msgid "Seconds"
msgstr ""
msgid "Serial terminal"
msgstr ""
#: source/ubl-settings-bootloader.cc:287
msgid "Setting bootloader"
msgstr ""
msgid "Show welcome window"
msgstr ""
msgid "Single User Mode"
msgstr ""
#: source/ubl-settings-bootloader.h:89 source/ubl-settings-bootloader.h:88
#: source/ubl-settings-bootloader.cc:920 source/ubl-settings-bootloader.cc:464
msgid "Successfully saved local and global configuration"
msgstr ""
#: source/ubl-settings-bootloader.h:43 source/ubl-settings-bootloader.h:42
#: source/ubl-settings-bootloader.cc:419
msgid "System boot setup"
msgstr ""
#: source/ubl-settings-bootloader.h:49 source/ubl-settings-bootloader.h:48
#: source/ubl-settings-bootloader.cc:427
msgid "Terminal for input"
msgstr ""
#: source/ubl-settings-bootloader.h:50 source/ubl-settings-bootloader.h:49
#: source/ubl-settings-bootloader.cc:428
msgid "Terminal for output"
msgstr ""
#: source/ubl-settings-bootloader.cc:299
msgid "The last selection will become the default boot choice"
msgstr ""
#: source/ubl-settings-bootloader.h:91 source/ubl-settings-bootloader.h:90
#: source/ubl-settings-bootloader.cc:107 source/ubl-settings-bootloader.cc:94
msgid "The program must be run as root"
msgstr ""
msgid "UBConfig - Loading"
msgstr ""
msgid "USB Keyboard (HID Boot protocol)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:71 source/ubl-settings-bootloader.h:70 #: source/ubl-strings.h:19
#: source/ubl-settings-bootloader.cc:440 msgid "Name"
msgid "User name to enter boot configuration editing mode"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:72 source/ubl-settings-bootloader.h:71 #: source/ubl-strings.h:20
msgid "User password to enter boot configuration edit mode" msgid "User"
msgstr "" msgstr ""
msgid "VGA text output (Coreboot)" #: source/ubl-strings.h:21
msgid "Password"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:69 source/ubl-settings-bootloader.h:68 #: source/ubl-strings.h:22
msgid "Would you like to read documentation in the Web?" msgid "Melody code"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:70 source/ubl-settings-bootloader.h:69 #: source/ubl-strings.h:23
msgid "" msgid "Option"
"You will be redirected to documentation website where documentation is\n"
"translated and supported by community."
msgstr "" msgstr ""
msgid "acpi=off (Disable ACPI)" #: source/ubl-strings.h:24
msgid "Description"
msgstr "" msgstr ""
msgid "ahci.mobile_jpm_policy=1 (Maximum performance, power management)" #: source/ubl-strings.h:26
msgid "Add"
msgstr "" msgstr ""
msgid "apic (Disable APIC)" #: source/ubl-strings.h:27
msgid "Edit"
msgstr "" msgstr ""
msgid "at_keyboard (Keyboard PC AT (Coreboot))" #: source/ubl-strings.h:28
msgid "Remove"
msgstr "" msgstr ""
msgid "console (PC BIOS & console EFI)" #: source/ubl-strings.h:30
msgid "Accept"
msgstr "" msgstr ""
msgid "gfxterm (Output in graphical mode)" #: source/ubl-strings.h:31
msgid "Cancel"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:40 source/ubl-settings-bootloader.h:76 #: source/ubl-strings.h:33
#: source/ubl-settings-bootloader.h:39 source/ubl-settings-bootloader.h:75 msgid "Boot animation with log"
#: source/ubl-settings-bootloader.cc:414 source/ubl-settings-bootloader.cc:282
msgid "https://wiki.ublinux.com"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.cc:860 source/ubl-settings-bootloader.cc:400 #: source/ubl-strings.h:34
msgid "" msgid "Boot animation without log"
"https://wiki.ublinux.com/ru/Программное_обеспечениерограммы_и_утилиты/Все/"
msgstr "" msgstr ""
msgid "i915.enable_dc=0 (Disable GPU power management)" #: source/ubl-strings.h:35
msgid "No boot animation with log"
msgstr "" msgstr ""
msgid "" #: source/ubl-strings.h:36
"intel_idle max_cstate=1 (Prevents the processor from going into a deep sleep " msgid "No boot animation with shortened log"
"state)"
msgstr "" msgstr ""
msgid "" #: source/ubl-strings.h:37
"intel_idle.max_cstate=4 (Eliminates flickering laptop display on processors " msgid "Back"
"Ultra Voltage)"
msgstr "" msgstr ""
msgid "no plymouth (Disable Plymouth)" #: source/ubl-strings.h:38
msgid "Default (Use last succeeded)"
msgstr "" msgstr ""
msgid "nolapic (Disable local APIC)" #: source/ubl-strings.h:40
msgid "Password input"
msgstr "" msgstr ""
msgid "nomodeset (Disable kernel selection and loading of video drivers)" #: source/ubl-strings.h:41 source/ubl-strings.h:48
msgid "Repeat password:"
msgstr "" msgstr ""
msgid "ofconsole (Console Open Firmware)" #: source/ubl-strings.h:42 source/ubl-strings.h:50
msgid "Password hash:"
msgstr "" msgstr ""
msgid "quiet (Downloading without text messages)" #: source/ubl-strings.h:43 source/ubl-strings.h:49
msgid "Do not encrypt password"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:47 source/ubl-settings-bootloader.h:46 #: source/ubl-strings.h:44
#: source/ubl-settings-bootloader.cc:425 msgid "Password contain special symbols"
msgid "seconds"
msgstr "" msgstr ""
msgid "serial (Serial terminal)" #: source/ubl-strings.h:45
msgid "Empty important field"
msgstr "" msgstr ""
msgid "single (Single User Mode)" #: source/ubl-strings.h:46
msgid "Password mismatch"
msgstr "" msgstr ""
msgid "" #: source/ubl-strings.h:47
"snd-intel-dspcfg.dsp_driver=1 (Forced selection of a sound device driver " msgid "Password:"
"from Intel)"
msgstr "" msgstr ""
msgid "splash (Show welcome window)" #: source/ubl-strings.h:51
msgid "Password must be at least"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:39 source/ubl-settings-bootloader.h:38 #: source/ubl-strings.h:51
#: source/ubl-settings-bootloader.cc:413 source/ubl-settings-bootloader.cc:418 msgid "characters"
#: 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 "System boot"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:79 source/ubl-settings-bootloader.h:78 #: source/ubl-strings.h:53
#: source/ubl-settings-bootloader.cc:947 source/ubl-settings-bootloader.cc:547 msgid "Add user"
msgid "ubl-settings-bootloader version: "
msgstr "" msgstr ""
msgid "usb_keyboard (Keyboard USB Keyboard (protocol HID Boot))" #: source/ubl-strings.h:54
msgid "Edit user"
msgstr "" msgstr ""
msgid "vga_text (Text output VGA (Coreboot))" #: source/ubl-strings.h:56
msgid "User name:"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.cc:450 #: source/ubl-strings.h:57
msgid "Нет анимации загрузки, полный журнал" msgid "User password:"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:58
msgid "Last succeeded load mode" msgid "Are you sure you want to remove user"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:58
msgid "Disable Plymouth" msgid "from boot menu users"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:60
msgid "Write debug output into /var/log/plymouth-debug.log" msgid "Add ringtone"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:61
msgid "Disable ACPI" msgid "Edit ringtone"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:62
msgid "Disable APIC" msgid "Chosen"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:63
msgid "Disable local APIC" msgid "Name:"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:64
msgid "Single User Mode" msgid "Melody code:"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Disable kernel selection and loading of video drivers" msgid "Are you sure you want to remove ringtone"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "enable driver (default: auto, 0 = disabled, 1 = enabled, 2 = headless) (int)" msgid "Enable driver (default: auto, 0 = disabled, 1 = enabled, 2 = headless) (int)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "disable kernel/abi16 acceleration (int)" msgid "Disable kernel/abi16 acceleration (int)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Use kernel modesetting [KMS] (0=disable, 1=on, -1=force vga console preference [default]) (int)" msgid "Use kernel modesetting [KMS] (0=disable, 1=on, -1=force vga console preference [default]) (int)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Enable frame buffer compression for power savings (default: -1 (use per-chip default)) (int)" msgid "Enable frame buffer compression for power savings (default: -1 (use per-chip default)) (int)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Enable power-saving display C-states. (-1=auto [default]; 0=disable; 1=up to DC5; 2=up to DC6; 3=up to DC5 with DC3CO; 4=up to DC6 with DC3CO) (int)" msgid "Enable power-saving display C-states. (-1=auto [default]; 0=disable; 1=up to DC5; 2=up to DC6; 3=up to DC5 with DC3CO; 4=up to DC6 with DC3CO) (int)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Enable PSR (0=disabled, 1=enabled) (int)" msgid "Enable PSR (0=disabled, 1=enabled) (int)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Disable display power wells when possible (-1=auto [default], 0=power wells always on, 1=power wells disabled when possible) (int)" msgid "Disable display power wells when possible (-1=auto [default], 0=power wells always on, 1=power wells disabled when possible) (int)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Enable IPS (default: true) (int)" msgid "Enable IPS (default: true) (int)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Try to skip unnecessary mode sets at boot time (0=disabled, 1=enabled) Default: -1 (use per-chip default) (int)" msgid "Try to skip unnecessary mode sets at boot time (0=disabled, 1=enabled) Default: -1 (use per-chip default) (int)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Disable display (default: false) (bool)" msgid "Disable display (default: false) (bool)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Enable GuC load for GuC submission and/or HuC load. Required functionality can be selected using bitmask values. (-1=auto [default], 0=disable, 1=GuC submission, 2=HuC load) (int)" msgid "Enable GuC load for GuC submission and/or HuC load. Required functionality can be selected using bitmask values. (-1=auto [default], 0=disable, 1=GuC submission, 2=HuC load) (int)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Enable multi-stream transport (MST) for new DisplayPort sinks. (default: true) (bool)" msgid "Enable multi-stream transport (MST) for new DisplayPort sinks. (default: true) (bool)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Enable support for Intel GVT-g graphics virtualization host support (default:false) (bool)" msgid "Enable support for Intel GVT-g graphics virtualization host support (default:false) (bool)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Marvell SATA via AHCI (1 = enabled) (int)" msgid "Marvell SATA via AHCI (1 = enabled) (int)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Default LPM policy for mobile chipsets (default:-1) (int)" msgid "Default LPM policy for mobile chipsets (default:-1) (int)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Force the DSP driver for Intel DSP (0=auto, 1=legacy, 2=SST, 3=SOF) (int)" msgid "Force the DSP driver for Intel DSP (0=auto, 1=legacy, 2=SST, 3=SOF) (int)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Do not use ACPI _CST for building the idle states list (default:N) (bool)" msgid "Do not use ACPI _CST for building the idle states list (default:N) (bool)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Use ACPI _CST for building the idle states list (default:N) (bool)" msgid "Use ACPI _CST for building the idle states list (default:N) (bool)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Prevents the processor from going into a deep sleep state (default:9) (int)" msgid "Prevents the processor from going into a deep sleep state (default:9) (int)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Eliminates flickering laptop display on Ultra Voltage processors (int)" msgid "Eliminates flickering laptop display on Ultra Voltage processors (int)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "Mask of disabled idle states (0=disabled, 1=enabled) Default: 0 (uint)" msgid "Mask of disabled idle states (0=disabled, 1=enabled) Default: 0 (uint)"
msgstr "" msgstr ""
#: source/ubl-settings-bootloader.h:162 #: source/ubl-strings.h:65
msgid "default autosuspend delay (-1=disabled) (int)" msgid "Default autosuspend delay (-1=disabled) (int)"
msgstr ""
#: source/ubl-settings-bootloader.h:162
msgid "Force dont`t load nouveau driver video for Nvidia"
msgstr "" msgstr ""

@ -8,8 +8,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: ubl-settings-bootloader 1.0\n" "Project-Id-Version: ubl-settings-bootloader 1.0\n"
"Report-Msgid-Bugs-To: info@ublinux.com\n" "Report-Msgid-Bugs-To: info@ublinux.com\n"
"POT-Creation-Date: 2023-04-25 15:27+0600\n" "POT-Creation-Date: 2023-01-01 00:00+0600\n"
"PO-Revision-Date: 2020-02-22 23:28+0600\n" "PO-Revision-Date: 2025-04-17 23:28+0600\n"
"Last-Translator: ublinux <info@ublinux.ru>\n" "Last-Translator: ublinux <info@ublinux.ru>\n"
"Language-Team: Russian - UBLinux Team <info@ublinux.ru>\n" "Language-Team: Russian - UBLinux Team <info@ublinux.ru>\n"
"Language: Russian\n" "Language: Russian\n"
@ -17,463 +17,374 @@ 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 "Edit" #: source/ubl-strings.h:2
msgstr "Редактирование" msgid "System boot"
msgstr "Загрузка системы"
msgid "Adding"
msgstr "Добавление"
msgid "Selecting the loading mode option"
msgstr "Выбор варианта режима загрузки"
msgid "Add user"
msgstr "Добавить пользователя"
msgid "Delete user"
msgstr "Удалить пользователя"
msgid "Add melody"
msgstr "Добавить мелодию"
msgid "Delete melody"
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"
msgstr "О программе"
#: source/ubl-settings-bootloader.h:44 source/ubl-settings-bootloader.h:43
msgid "About System boot"
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
msgid "Active"
msgstr "Активно"
#: source/ubl-settings-bootloader.h:63 source/ubl-settings-bootloader.h:62
msgid "Always redirect"
msgstr "Всегда перенаправлять"
#: source/ubl-settings-bootloader.h:96 source/ubl-settings-bootloader.h:95
msgid "Argument not recognized\n"
msgstr "Аргумент не распознан\n"
#: source/ubl-settings-bootloader.h:66 source/ubl-settings-bootloader.h:65
msgid "Boot menu user name:"
msgstr "Имя пользователя меню загрузки:"
#: source/ubl-settings-bootloader.h:67 source/ubl-settings-bootloader.h:66 #: source/ubl-strings.h:3
msgid "Boot menu user password:" msgid "Configuring system boot parameters"
msgstr "Пароль пользователя меню загрузки:" msgstr "Настройка параметров загрузки системы"
#: source/ubl-settings-bootloader.h:64 source/ubl-settings-bootloader.h:63 #: source/ubl-strings.h:5
msgid "Boot screen display mode:" msgid "Boot menu"
msgstr "Режим отображения экрана загрузки:" msgstr "Менб загрузки"
#: source/ubl-settings-bootloader.h:51 source/ubl-settings-bootloader.h:50 #: source/ubl-strings.h:6
msgid "Boot selection menu timer:" msgid "Boot selection menu timer:"
msgstr "Таймер меню выбора варианта загрузки:" msgstr "Таймер меню выбора варианта загрузки:"
#: source/ubl-settings-bootloader.h:62 source/ubl-settings-bootloader.h:61 #: source/ubl-strings.h:7
msgid "Cancel" msgid "seconds"
msgstr "Отменить" msgstr "секунд"
#: source/ubl-settings-bootloader.h:45 source/ubl-settings-bootloader.h:44 #: source/ubl-strings.h:8
#: source/ubl-settings-bootloader.cc:421 source/ubl-settings-bootloader.cc:422 msgid "Default"
#: source/ubl-settings-bootloader.cc:423 source/ubl-settings-bootloader.cc:289 msgstr "По умлочанию"
#: source/ubl-settings-bootloader.cc:290 source/ubl-settings-bootloader.cc:291
msgid "Command line parameters:"
msgstr "Параметры командной строки:"
#: source/ubl-settings-bootloader.h:42 source/ubl-settings-bootloader.h:41 #: source/ubl-strings.h:9
#: source/ubl-settings-bootloader.cc:417 source/ubl-settings-bootloader.cc:285 msgid "Default OS:"
msgid "Configuring system boot parameters" msgstr "Загрузка по умлочанию:"
msgstr "Настройка параметров загрузки системы"
msgid "Configuring the boot loader settings" #: source/ubl-strings.h:10
msgstr "Настройка параметров загрузчика системы" msgid "Load screen display mode:"
msgstr "Режим отображения экрана загрузки:"
#: source/ubl-settings-bootloader.h:38 source/ubl-settings-bootloader.h:37 #: source/ubl-strings.h:11
#: source/ubl-settings-bootloader.cc:411 source/ubl-settings-bootloader.cc:279 msgid "Boot Menu Users"
msgid "Copyright © UBSoft LLC, 2022 - " msgstr "Пользователи меню загрузчика"
msgstr ""
#: source/ubl-settings-bootloader.cc:292 #: source/ubl-strings.h:12
#, fuzzy msgid "Startup ringtone"
msgid "Default download" msgstr "Мелодия при запуске"
msgstr "По умолчанию"
#: source/ubl-settings-bootloader.h:94 source/ubl-settings-bootloader.h:93 #: source/ubl-strings.h:13
#: source/ubl-settings-bootloader.cc:339 source/ubl-settings-bootloader.cc:201 msgid "Parameters passed to the kernel"
msgid "Description" msgstr "Параметры, передаваемые ядру"
msgstr "Описание"
#: source/ubl-settings-bootloader.h:48 source/ubl-settings-bootloader.h:47 #: source/ubl-strings.h:14
#: source/ubl-settings-bootloader.cc:426 source/ubl-settings-bootloader.cc:294 msgid "Command line parameters:"
msgid "Download menu" msgstr "Параметры командной строки:"
msgstr "Меню загрузки"
msgid "Downloading without text messages" #: source/ubl-strings.h:15
msgstr "Загрузка без текстовых сообщений" msgid "Input terminal"
msgstr "Терминал для ввода"
msgid "Eliminates flickering laptop display on Ultra Voltage processors" #: source/ubl-strings.h:16
msgstr "Устраняет мерцание дисплея ноутбука на процессорах Ultra Voltage" msgid "Output terminal"
msgstr "Терминал для вывода"
#: source/ubl-settings-bootloader.h:78 source/ubl-settings-bootloader.h:77 #: source/ubl-strings.h:18 source/ubl-strings.h:55
#: source/ubl-settings-bootloader.cc:496 msgid "Administrator"
msgid "Enter login" msgstr "Администратор"
msgstr "Введите логин"
#: source/ubl-settings-bootloader.h:77 source/ubl-settings-bootloader.h:76 #: source/ubl-strings.h:19
#: source/ubl-settings-bootloader.cc:476 msgid "Name"
msgid "Enter your password" msgstr "Название"
msgstr "Введите пароль"
#: source/ubl-settings-bootloader.h:84 source/ubl-settings-bootloader.h:83 #: source/ubl-strings.h:20
#: source/ubl-settings-bootloader.cc:897 source/ubl-settings-bootloader.cc:443 msgid "User"
#, fuzzy msgstr "Пользователь"
msgid "Error saved local and global configuration"
msgstr "Успешно записаны локальная и глобальная конфигурация"
msgid "Forced selection of an Intel sound device driver" #: source/ubl-strings.h:21
msgstr "Принудительный выбор драйвера звукового устройства от Intel" msgid "Password"
msgstr "Пароль"
msgid "" #: source/ubl-strings.h:22
"GTK settings bootloader for UBLinux\n" msgid "Melody code"
"\n" msgstr "Код мелодии"
"Usage: ubl-settings-bootloader [OPTIONS...]\n"
"Options:\n"
" -h, --help\t Show this help\n"
" -V, --version\t Show package version\n"
msgstr ""
#: source/ubl-settings-bootloader.h:95 source/ubl-settings-bootloader.h:94 #: source/ubl-strings.h:23
msgid "" msgid "Option"
"GTK settings bootloader for UBLinux\n" msgstr "Опция"
"\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"
msgstr ""
"GTK-утилита настройки загрузчика для UBLinux\n"
"\n"
"Использование: ubl-settings-bootloader [Параметры приложения...]\n"
"Параметры приложения:\n"
" -h, --help\t Показать параметры справки\n"
" -V, --version\t Показать версию пакета\n"
" --lock-help Блокировка вызова справки\n"
" --lock-save Блокировка сохранения локальной и глобальной "
"конфигурации\n"
" --lock-save-local Блокировка сохранения локальной конфигурации\n"
" --lock-save-global Блокировка сохранения глобальной конфигурации\n"
" --lock-load-global Блокировка загрузки глобальной конфигурации\n"
#: source/ubl-settings-bootloader.h:86 source/ubl-settings-bootloader.h:85
#: source/ubl-settings-bootloader.cc:911 source/ubl-settings-bootloader.cc:455
msgid "Global configuration downloaded successfully"
msgstr "Успешно загружена глобальная конфигурация"
#: source/ubl-settings-bootloader.h:81 source/ubl-settings-bootloader.h:80
#: source/ubl-settings-bootloader.cc:885 source/ubl-settings-bootloader.cc:431
msgid "Global configuration read error"
msgstr "Ошибка чтения глобальной конфигурации"
#: source/ubl-settings-bootloader.h:88 source/ubl-settings-bootloader.h:87
#: source/ubl-settings-bootloader.cc:917 source/ubl-settings-bootloader.cc:461
msgid "Global configuration successfully written"
msgstr "Успешно записана глобальная конфигурация"
#: source/ubl-settings-bootloader.h:83 source/ubl-settings-bootloader.h:82
#: source/ubl-settings-bootloader.cc:893 source/ubl-settings-bootloader.cc:439
msgid "Global configuration write error"
msgstr "Ошибка записи глобальной конфигурации"
#: source/ubl-settings-bootloader.h:52 source/ubl-settings-bootloader.h:51
#: source/ubl-settings-bootloader.cc:430 source/ubl-settings-bootloader.cc:300
msgid "Help"
msgstr "Справка"
#: source/ubl-settings-bootloader.cc:295
#, fuzzy
msgid "Input terminal"
msgstr "Терминал для вывода"
#: source/ubl-settings-bootloader.h:75 source/ubl-settings-bootloader.h:74 #: source/ubl-strings.h:24
#: source/ubl-settings-bootloader.cc:451 msgid "Description"
msgid "Lack of loading animation with the\noutput of the abbreviated log" msgstr "Описание"
msgstr "Отсутствие анимации загрузки с\nвыводом сокращенного журнала"
msgid "Lack of loading animation with the output of the abbreviated log" #: source/ubl-strings.h:26
msgstr "Отсутствие анимации загрузки с выводом сокращенного журнала" msgid "Add"
msgstr "Добавить"
#, fuzzy #: source/ubl-strings.h:27
msgid "Last Successful Download" msgid "Edit"
msgstr "Последняя удачная загрузка" msgstr "Редактировать"
#: source/ubl-settings-bootloader.h:68 source/ubl-settings-bootloader.h:67
#: source/ubl-settings-bootloader.cc:452
msgid "Last successful upload"
msgstr "Последняя удачная загрузка"
#: source/ubl-settings-bootloader.h:55 source/ubl-settings-bootloader.h:54
#: source/ubl-settings-bootloader.cc:438 source/ubl-settings-bootloader.cc:308
msgid "Load"
msgstr "Загрузить"
#: source/ubl-settings-bootloader.h:46 source/ubl-settings-bootloader.h:45
#: source/ubl-settings-bootloader.cc:424
msgid "Load default:"
msgstr "Загрузка по умолчанию:"
#: source/ubl-settings-bootloader.h:59 source/ubl-settings-bootloader.h:58
#: source/ubl-settings-bootloader.cc:435 source/ubl-settings-bootloader.cc:305
msgid "Load global configuration"
msgstr "Загрузить глобальную конфигурацию"
#: source/ubl-settings-bootloader.h:60 source/ubl-settings-bootloader.h:59
#: source/ubl-settings-bootloader.cc:436 source/ubl-settings-bootloader.cc:306
msgid "Load local configuration"
msgstr "Загрузить локальную конфигурацию"
#: source/ubl-settings-bootloader.cc:442
#, fuzzy
msgid "Load menu user name:"
msgstr "Имя пользователя меню загрузки:"
#: source/ubl-settings-bootloader.cc:443 #: source/ubl-strings.h:28
#, fuzzy msgid "Remove"
msgid "Load menu user password:" msgstr "Удалить"
msgstr "Пароль пользователя меню загрузки:"
#: source/ubl-settings-bootloader.cc:429 source/ubl-settings-bootloader.cc:298 #: source/ubl-strings.h:30
msgid "Load option timer" msgid "Accept"
msgstr "" msgstr "Принять"
#: source/ubl-settings-bootloader.cc:441 #: source/ubl-strings.h:31
#, fuzzy msgid "Cancel"
msgid "Load screen display mode:" msgstr "Отменить"
msgstr "Режим отображения экрана загрузки:"
#: source/ubl-settings-bootloader.h:73 source/ubl-settings-bootloader.h:72 #: source/ubl-strings.h:33
#: source/ubl-settings-bootloader.cc:448 msgid "Boot animation with log"
msgid "Loading animation with log"
msgstr "Анимация загрузки с журналом" msgstr "Анимация загрузки с журналом"
#: source/ubl-settings-bootloader.h:74 source/ubl-settings-bootloader.h:73 #: source/ubl-strings.h:34
#: source/ubl-settings-bootloader.cc:449 msgid "Boot animation without log"
msgid "Loading animation without log"
msgstr "Анимация загрузки без журнала" msgstr "Анимация загрузки без журнала"
#: source/ubl-settings-bootloader.h:85 source/ubl-settings-bootloader.h:84 #: source/ubl-strings.h:35
#: source/ubl-settings-bootloader.cc:908 source/ubl-settings-bootloader.cc:452 msgid "No boot animation with log"
msgid "Local configuration downloaded successfully" msgstr "Отсутствие анимации загрузки с выводом журнала"
msgstr "Успешно загружена локальная конфигурация"
#: source/ubl-settings-bootloader.h:80 source/ubl-settings-bootloader.h:79 #: source/ubl-strings.h:36
#: source/ubl-settings-bootloader.cc:881 source/ubl-settings-bootloader.cc:427 msgid "No boot animation with shortened log"
msgid "Local configuration reading error" msgstr "Отсутствие анимации загрузки б выводом сокращённого журнала"
msgstr "Ошибка чтения локальной конфигурации"
#: source/ubl-settings-bootloader.h:87 source/ubl-settings-bootloader.h:86 #: source/ubl-strings.h:37
#: source/ubl-settings-bootloader.cc:914 source/ubl-settings-bootloader.cc:458 msgid "Back"
msgid "Local configuration successfully written" msgstr "Назад"
msgstr "Успешно записана локальная конфигурация"
#: source/ubl-settings-bootloader.h:82 source/ubl-settings-bootloader.h:81 #: source/ubl-strings.h:38
#: source/ubl-settings-bootloader.cc:889 source/ubl-settings-bootloader.cc:435 msgid "Default (Use last succeeded)"
msgid "Local configuration write error" msgstr "По умолчанию (Последняя удачная загрузка)"
msgstr "Ошибка записи локальной конфигурации"
#: source/ubl-settings-bootloader.cc:445 source/ubl-settings-bootloader.cc:447 #: source/ubl-strings.h:40
msgid "Manually" msgid "Password input"
msgstr "Вручную" msgstr "Ввод пароля"
msgid "Maximum performance, power management" #: source/ubl-strings.h:41 source/ubl-strings.h:48
msgstr "Максимальная производительность, управление питанием" msgid "Repeat password:"
msgstr "Подтвердите ввод пароля:"
#: source/ubl-settings-bootloader.h:65 source/ubl-settings-bootloader.h:64 #: source/ubl-strings.h:42 source/ubl-strings.h:50
msgid "No loading animation,\nfull log" msgid "Password hash:"
msgstr "Отсутствие анимации загрузки\nс выводом журнала" msgstr "Хэш пароля"
msgid "No loading animation, full log" #: source/ubl-strings.h:43 source/ubl-strings.h:49
msgstr "Отсутствие анимации загрузки с выводом журнала" msgid "Do not encrypt password"
msgstr "Не шифровать пароль"
#: source/ubl-settings-bootloader.cc:444 source/ubl-settings-bootloader.cc:446 #: source/ubl-strings.h:44
msgid "Not available" msgid "Password contain special symbols"
msgstr "Отсутствует" msgstr "Пароль содержит специальные символы"
#: source/ubl-settings-bootloader.h:90 source/ubl-settings-bootloader.h:89 #: source/ubl-strings.h:45
#: source/ubl-settings-bootloader.cc:923 source/ubl-settings-bootloader.cc:341 msgid "Empty important field"
#: source/ubl-settings-bootloader.cc:354 source/ubl-settings-bootloader.cc:367 msgstr "Пустое важное поле"
msgid "Nothing to save!"
msgstr "Нечего сохранять!"
msgid "Open Firmware Console" #: source/ubl-strings.h:46
msgstr "Консоль Open Firmware" msgid "Password mismatch"
msgstr "Пароли не совпадают"
#: source/ubl-settings-bootloader.h:93 source/ubl-settings-bootloader.h:92 #: source/ubl-strings.h:47
#: source/ubl-settings-bootloader.cc:338 source/ubl-settings-bootloader.cc:200 msgid "Password:"
msgid "Option" msgstr "Пароль:"
msgstr "Опция"
msgid "Output in graphical mode" #: source/ubl-strings.h:51
msgstr "Вывод в графическом режиме" msgid "Password must be at least"
msgstr "Пароль состоять из по крайней мере"
#: source/ubl-settings-bootloader.cc:296 #: source/ubl-strings.h:51
msgid "Output terminal" msgid "characters"
msgstr "Терминал для вывода" msgstr "символов"
msgid "PC AT Keyboard (Coreboot)"
msgstr "Клавиатура PC AT (Coreboot)"
msgid "PC BIOS & EFI console" #: source/ubl-strings.h:53
msgstr "PC BIOS & консоль EFI" msgid "Add user"
msgstr "Добавить пользователя"
msgid "Parameters passed to the kernel" #: source/ubl-strings.h:54
msgstr "Параметры, передаваемые ядру" msgid "Edit user"
msgstr "Редактировать пользователя"
msgid "Prevents the processor from going into a deep sleep state" #: source/ubl-strings.h:56
msgstr "Предотвращает переход процессора в состояние глубокого сна" msgid "User name:"
msgstr "Имя пользователя:"
#: source/ubl-settings-bootloader.h:41 source/ubl-settings-bootloader.h:40 #: source/ubl-strings.h:57
#: source/ubl-settings-bootloader.cc:416 source/ubl-settings-bootloader.cc:420 msgid "User password:"
#: source/ubl-settings-bootloader.cc:284 source/ubl-settings-bootloader.cc:288 msgstr "Пароль пользователя:"
msgid "Project homepage"
msgstr "Домашняя страница проекта"
#: source/ubl-settings-bootloader.h:61 source/ubl-settings-bootloader.h:60 #: source/ubl-strings.h:58
msgid "Read online" msgid "Are you sure you want to remove user"
msgstr "Прочитать онлайн" msgstr "Вы уверены что хотите удалить пользователя"
#: source/ubl-settings-bootloader.h:54 source/ubl-settings-bootloader.h:53 #: source/ubl-strings.h:58
#: source/ubl-settings-bootloader.cc:437 source/ubl-settings-bootloader.cc:307 msgid "from boot menu users"
msgid "Save" msgstr "из пользователей меню загрузчика"
msgstr "Сохранить"
msgid "Boot Menu Users" #: source/ubl-strings.h:60
msgstr "Пользователи меню загрузчика" msgid "Add ringtone"
msgstr "Добавить мелодию"
msgid "Title" #: source/ubl-strings.h:61
msgstr "Название" msgid "Edit ringtone"
msgstr "Изменение мелодии"
msgid "User" #: source/ubl-strings.h:62
msgstr "Пользователь" msgid "Chosen"
msgstr "Выбран"
msgid "Enter the name and code of the tune in the \"Ringtone at startup\" field" #: source/ubl-strings.h:63
msgstr "Введите название и код мелодии в поле \"Мелодия при загрузке\"" msgid "Name:"
msgstr "Название:"
msgid "Enter name and password in the \"Boot Menu Users\" field" #: source/ubl-strings.h:64
msgstr "Введите имя и пароль в поле \"Пользователи меню загрузчика\"" msgid "Melody code:"
msgstr "Код мелодии:"
msgid "Password" #: source/ubl-strings.h:65
msgstr "Пароль" msgid "Are you sure you want to remove ringtone"
msgstr "Вы уверены что хотите удалить мелодию"
msgid "Melody added" #: source/ubl-strings.h:65
msgstr "Мелодия добавлена" msgid ""
"Enable driver (default: auto, 0 = disabled, 1 = enabled, 2 = headless) (int)"
msgstr ""
"Включить драйвер (по умолчанию: авто, 0 = отключено, 1 = включено, 2 = без "
"головы) (целочисленное)"
msgid "User added" #: source/ubl-strings.h:65
msgstr "Пользователь добавлен" msgid "Disable kernel/abi16 acceleration (int)"
msgstr "Отключить ускорение ядра/abi16 (целочисленное)"
msgid "Melody deleted" #: source/ubl-strings.h:65
msgstr "Мелодия удалена" msgid ""
"Use kernel modesetting [KMS] (0=disable, 1=on, -1=force vga console "
"preference [default]) (int)"
msgstr ""
"Использовать настройку режима ядра [KMS] (0=отключить, 1=включить, "
"-1=принудительно настроить консоль vga [по умолчанию]) (целочисленное)"
msgid "User deleted" #: source/ubl-strings.h:65
msgstr "Пользователь удалён" msgid ""
"Enable frame buffer compression for power savings (default: -1 (use per-chip "
"default)) (int)"
msgstr ""
"Включить сжатие кадрового буфера для экономии энергии (по умолчанию: -1 "
"(используйте значение по умолчанию для каждого чипа)) (целочисленное)"
msgid "Administrator" #: source/ubl-strings.h:65
msgstr "Администратор" msgid ""
"Enable power-saving display C-states. (-1=auto [default]; 0=disable; 1=up to "
"DC5; 2=up to DC6; 3=up to DC5 with DC3CO; 4=up to DC6 with DC3CO) (int)"
msgstr ""
"Включить энергосберегающее отображение C-состояний. (-1=авто [по умолчанию]; "
"0=отключить; 1=до DC5; 2=до DC6; 3=до DC5 с DC3CO; 4=до DC6 с DC3CO) "
"(целочисленное)"
msgid "Select" #: source/ubl-strings.h:65
msgstr "Выбор" msgid "Enable PSR (0=disabled, 1=enabled) (int)"
msgstr "Включить PSR (0=выключено, 1=включено) (целочисленное)"
msgid "Melody code" #: source/ubl-strings.h:65
msgstr "Код мелодии" msgid ""
"Disable display power wells when possible (-1=auto [default], 0=power wells "
"always on, 1=power wells disabled when possible) (int)"
msgstr ""
"Отключить отображение энергетических колодцев, когда это возможно (-1=авто "
"[по умолчанию], 0=энергетические колодцы всегда включены, 1=энергетические "
"колодцы отключены, когда это возможно) (целочисленное)"
msgid "Ringtone at startup" #: source/ubl-strings.h:65
msgstr "Мелодия при загрузке" msgid "Enable IPS (default: true) (int)"
msgstr "Включить IPS (по умолчанию: true) (целочисленное)"
#: source/ubl-settings-bootloader.h:58 source/ubl-settings-bootloader.h:57 #: source/ubl-strings.h:65
#: source/ubl-settings-bootloader.cc:434 source/ubl-settings-bootloader.cc:304 msgid ""
msgid "Save in global configuration" "Try to skip unnecessary mode sets at boot time (0=disabled, 1=enabled) "
msgstr "Сохранить в глобальную конфигурацию" "Default: -1 (use per-chip default) (int)"
msgstr ""
"Попробовать пропустить ненужные наборы режимов во время загрузки "
"(0=отключено, 1=включено). По умолчанию: -1 (используйте настройки по "
"умолчанию для каждого чипа) (целочисленное)"
#: source/ubl-settings-bootloader.h:57 source/ubl-settings-bootloader.h:56 #: source/ubl-strings.h:65
#: source/ubl-settings-bootloader.cc:433 source/ubl-settings-bootloader.cc:303 msgid "Disable display (default: false) (bool)"
msgid "Save in local configuration" msgstr "Отключить отображение (по умолчанию: false) (логическое значение)"
msgstr "Сохранить в локальную конфигурацию"
#: source/ubl-settings-bootloader.h:56 source/ubl-settings-bootloader.h:55 #: source/ubl-strings.h:65
#: source/ubl-settings-bootloader.cc:432 source/ubl-settings-bootloader.cc:302 msgid ""
msgid "Save configuration" "Enable GuC load for GuC submission and/or HuC load. Required functionality "
msgstr "Сохранить конфигурацию" "can be selected using bitmask values. (-1=auto [default], 0=disable, 1=GuC "
"submission, 2=HuC load) (int)"
msgstr ""
"Включить загрузку GuC для отправки GuC и/или загрузки HuC. Требуемую "
"функциональность можно выбрать с помощью значений битовой маски. (-1=авто "
"[по умолчанию], 0=отключить, 1=отправка GuC, 2=загрузка HuC) (целочисленное)"
#: source/ubl-settings-bootloader.cc:293 #: source/ubl-strings.h:65
#, fuzzy msgid ""
msgid "Seconds" "Enable multi-stream transport (MST) for new DisplayPort sinks. (default: "
msgstr "секунд" "true) (bool)"
msgstr ""
"Включить многопотоковую передачу (MST) для новых приемников DisplayPort. (по "
"умолчанию: true) (логическое значение)"
msgid "Serial terminal" #: source/ubl-strings.h:65
msgstr "Последовательный терминал" msgid ""
"Enable support for Intel GVT-g graphics virtualization host support (default:"
"false) (bool)"
msgstr ""
"Включить поддержку хоста виртуализации графики Intel GVT-g (по умолчанию: "
"false) (логическое значение)"
#: source/ubl-settings-bootloader.cc:287 #: source/ubl-strings.h:65
msgid "Setting bootloader" msgid "Marvell SATA via AHCI (1 = enabled) (int)"
msgstr "Настройка загрузчика" msgstr "Marvell SATA через AHCI (1 = включено) (целочисленное)"
msgid "Show welcome window" #: source/ubl-strings.h:65
msgstr "Показывать окно приветствия" msgid "Default LPM policy for mobile chipsets (default:-1) (int)"
msgstr ""
"Политика LPM по умолчанию для мобильных чипсетов (по умолчанию:-1) "
"(целочисленное)"
#: source/ubl-settings-bootloader.h:89 source/ubl-settings-bootloader.h:88 #: source/ubl-strings.h:65
#: source/ubl-settings-bootloader.cc:920 source/ubl-settings-bootloader.cc:464 msgid ""
msgid "Successfully saved local and global configuration" "Force the DSP driver for Intel DSP (0=auto, 1=legacy, 2=SST, 3=SOF) (int)"
msgstr "Успешно записаны локальная и глобальная конфигурация" msgstr ""
"Принудительно установить драйвер DSP для Intel DSP (0=авто, 1=устаревший, "
"2=SST, 3=SOF) (целочисленное)"
#: source/ubl-settings-bootloader.h:43 source/ubl-settings-bootloader.h:42 #: source/ubl-strings.h:65
#: source/ubl-settings-bootloader.cc:419 msgid ""
msgid "System boot setup" "Do not use ACPI _CST for building the idle states list (default:N) (bool)"
msgstr "Настройка загрузки системы" msgstr ""
"Не использовать ACPI _CST для создания списка состояний простоя (по "
"умолчанию: N) (логическое значение)"
#: source/ubl-settings-bootloader.h:49 source/ubl-settings-bootloader.h:48 #: source/ubl-strings.h:65
#: source/ubl-settings-bootloader.cc:427 msgid "Use ACPI _CST for building the idle states list (default:N) (bool)"
#, fuzzy msgstr ""
msgid "Terminal for input" "Используйте ACPI _CST для создания списка состояний простоя (по умолчанию: "
msgstr "Терминал для ввода" "N) (логическое значение)"
#: source/ubl-settings-bootloader.h:50 source/ubl-settings-bootloader.h:49 #: source/ubl-strings.h:65
#: source/ubl-settings-bootloader.cc:428 msgid ""
#, fuzzy "Prevents the processor from going into a deep sleep state (default:9) (int)"
msgid "Terminal for output" msgstr ""
msgstr "Терминал для вывода" "Предотвращает переход процессора в состояние глубокого сна (по умолчанию: 9) "
"(целочисленное)"
#: source/ubl-settings-bootloader.cc:299 #: source/ubl-strings.h:65
msgid "The last selection will become the default boot choice" msgid "Eliminates flickering laptop display on Ultra Voltage processors (int)"
msgstr "Последний выбор станет выбором загрузки по умолчанию" msgstr ""
"Устраняет мерцание дисплея ноутбука на процессорах сверхнапряжения "
"(целочисленное)"
#: source/ubl-settings-bootloader.h:91 source/ubl-settings-bootloader.h:90 #: source/ubl-strings.h:65
#: source/ubl-settings-bootloader.cc:107 source/ubl-settings-bootloader.cc:94 msgid "Mask of disabled idle states (0=disabled, 1=enabled) Default: 0 (uint)"
msgid "The program must be run as root" msgstr ""
msgstr "Программа должна быть запущена с правами суперпользователя!" "Маска отключенных состояний простоя (0=отключено, 1=включено) По умолчанию: "
"0 (целочисленное)"
msgid "UBConfig - Loading" #: source/ubl-strings.h:65
msgstr "UBConfig - Загрузка" msgid "Default autosuspend delay (-1=disabled) (int)"
msgstr "Задержка автоприостановки по умолчанию (-1=отключено) (целочисленное)"
msgid "USB Keyboard (HID Boot protocol)" msgid "USB Keyboard (HID Boot protocol)"
msgstr "Клавиатура USB Keyboard (протокол HID Boot)" msgstr "Клавиатура USB Keyboard (протокол HID Boot)"
#: source/ubl-settings-bootloader.h:71 source/ubl-settings-bootloader.h:70
#: source/ubl-settings-bootloader.cc:440
msgid "User name to enter boot configuration editing mode" msgid "User name to enter boot configuration editing mode"
msgstr "" msgstr ""
"Имя пользователя для входа в режим редактирования конфигурации загрузки" "Имя пользователя для входа в режим редактирования конфигурации загрузки"
#: source/ubl-settings-bootloader.h:72 source/ubl-settings-bootloader.h:71
msgid "User password to enter boot configuration edit mode" msgid "User password to enter boot configuration edit mode"
msgstr "" msgstr ""
"Пароль пользователя для входа в режим редактирования конфигурации загрузки" "Пароль пользователя для входа в режим редактирования конфигурации загрузки"
@ -481,11 +392,9 @@ msgstr ""
msgid "VGA text output (Coreboot)" msgid "VGA text output (Coreboot)"
msgstr "Текстовый вывод VGA (Coreboot)" msgstr "Текстовый вывод VGA (Coreboot)"
#: source/ubl-settings-bootloader.h:69 source/ubl-settings-bootloader.h:68
msgid "Would you like to read documentation in the Web?" msgid "Would you like to read documentation in the Web?"
msgstr "Вы хотите прочитать справку в Сети?" msgstr "Вы хотите прочитать справку в Сети?"
#: source/ubl-settings-bootloader.h:70 source/ubl-settings-bootloader.h:69
msgid "" msgid ""
"You will be redirected to documentation website where documentation is\n" "You will be redirected to documentation website where documentation is\n"
"translated and supported by community." "translated and supported by community."
@ -513,36 +422,22 @@ msgstr "Консоль (PC BIOS & console EFI)"
msgid "gfxterm (Output in graphical mode)" msgid "gfxterm (Output in graphical mode)"
msgstr "gfxterm (Вывод в графическом режиме)" msgstr "gfxterm (Вывод в графическом режиме)"
#: source/ubl-settings-bootloader.h:40 source/ubl-settings-bootloader.h:76
#: source/ubl-settings-bootloader.h:39 source/ubl-settings-bootloader.h:75
#: source/ubl-settings-bootloader.cc:414 source/ubl-settings-bootloader.cc:282
msgid "https://wiki.ublinux.com"
msgstr ""
#: source/ubl-settings-bootloader.cc:860 source/ubl-settings-bootloader.cc:400
#, fuzzy
msgid ""
"https://wiki.ublinux.com/ru/Программное_обеспечениерограммы_и_утилиты/Все/"
msgstr ""
"https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/"
"ubl-settings-bootloader"
msgid "i915.enable_dc=0 (Disable GPU power management)" msgid "i915.enable_dc=0 (Disable GPU power management)"
msgstr "i915.enable_dc=0 (Отключите управление питанием GPU)" msgstr "i915.enable_dc=0 (Отключите управление питанием GPU)"
msgid "" msgid ""
"intel_idle max_cstate=1 (Prevents the processor from going into a deep sleep " "intel_idle max_cstate=1 (Prevents the processor from going into a deep "
"state)" "sleep state)"
msgstr "" msgstr ""
"intel_idle max_cstate=1 (Предотвращает переход процессора в состояние " "intel_idle max_cstate=1 (Предотвращает переход процессора в состояние "
"глубокого сна)" "глубокого сна)"
msgid "" msgid ""
"intel_idle.max_cstate=4 (Eliminates flickering laptop display on processors " "intel_idle.max_cstate=4 (Eliminates flickering laptop display on "
"Ultra Voltage)" "processors Ultra Voltage)"
msgstr "" msgstr ""
"intel_idle.max_cstate=4 (Устраняет мерцание дисплея ноутбука на процессорах " "intel_idle.max_cstate=4 (Устраняет мерцание дисплея ноутбука на "
"Ultra Voltage)" "процессорах Ultra Voltage)"
msgid "no plymouth (Disable Plymouth)" msgid "no plymouth (Disable Plymouth)"
msgstr "no plymouth (Отключить Plymouth" msgstr "no plymouth (Отключить Plymouth"
@ -559,11 +454,6 @@ msgstr "ofconsole (Консоль Open Firmware)"
msgid "quiet (Downloading without text messages)" msgid "quiet (Downloading without text messages)"
msgstr "quiet (Загрузка без текстовых сообщений)" msgstr "quiet (Загрузка без текстовых сообщений)"
#: source/ubl-settings-bootloader.h:47 source/ubl-settings-bootloader.h:46
#: source/ubl-settings-bootloader.cc:425
msgid "seconds"
msgstr "секунд"
msgid "serial (Serial terminal)" msgid "serial (Serial terminal)"
msgstr "serial (Последовательный терминал)" msgstr "serial (Последовательный терминал)"
@ -580,15 +470,6 @@ msgstr ""
msgid "splash (Show welcome window)" msgid "splash (Show welcome window)"
msgstr "splash (Показать окно приветствия)" msgstr "splash (Показать окно приветствия)"
#: source/ubl-settings-bootloader.h:39 source/ubl-settings-bootloader.h:38
#: source/ubl-settings-bootloader.cc:413 source/ubl-settings-bootloader.cc:418
#: 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 "System boot"
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
msgid "ubl-settings-bootloader version: " msgid "ubl-settings-bootloader version: "
msgstr "ubl-settings-bootloader версия: " msgstr "ubl-settings-bootloader версия: "
@ -598,137 +479,29 @@ msgstr "usb_keyboard (Клавиатура USB Keyboard (protocol HID Boot))"
msgid "vga_text (Text output VGA (Coreboot))" msgid "vga_text (Text output VGA (Coreboot))"
msgstr "vga_text (Текстовый вывод VGA (Coreboot))" msgstr "vga_text (Текстовый вывод VGA (Coreboot))"
#: source/ubl-settings-bootloader.cc:450
msgid "Нет анимации загрузки, полный журнал"
msgstr ""
#~ msgid "Mine"
#~ msgstr "Свой"
#~ msgid "Disabled"
#~ msgstr "Отключён"
#: source/ubl-settings-bootloader.h:162
msgid "Last succeeded load mode" msgid "Last succeeded load mode"
msgstr "Последний удачный вариант загрузки" msgstr "Последний удачный вариант загрузки"
#: source/ubl-settings-bootloader.h:162
msgid "Disable Plymouth" msgid "Disable Plymouth"
msgstr "Отключить Плимут" msgstr "Отключить Плимут"
#: source/ubl-settings-bootloader.h:162
msgid "Write debug output into /var/log/plymouth-debug.log" msgid "Write debug output into /var/log/plymouth-debug.log"
msgstr "Записать выходные данные отладки в /var/log/plymouth-debug.log" msgstr "Записать выходные данные отладки в /var/log/plymouth-debug.log"
#: source/ubl-settings-bootloader.h:162
msgid "Disable ACPI" msgid "Disable ACPI"
msgstr "Отключить ACPI" msgstr "Отключить ACPI"
#: source/ubl-settings-bootloader.h:162
msgid "Disable APIC" msgid "Disable APIC"
msgstr "Отключить APIC" msgstr "Отключить APIC"
#: source/ubl-settings-bootloader.h:162
msgid "Disable local APIC" msgid "Disable local APIC"
msgstr "Отключить локальный APIC" msgstr "Отключить локальный APIC"
#: source/ubl-settings-bootloader.h:162
msgid "Single User Mode" msgid "Single User Mode"
msgstr "Однопользовательский режим" msgstr "Однопользовательский режим"
#: source/ubl-settings-bootloader.h:162
msgid "Disable kernel selection and loading of video drivers" msgid "Disable kernel selection and loading of video drivers"
msgstr "Отключить выбор ядра и загрузку видеодрайверов" msgstr "Отключить выбор ядра и загрузку видеодрайверов"
#: source/ubl-settings-bootloader.h:162
msgid "Enable driver (default: auto, 0 = disabled, 1 = enabled, 2 = headless) (целочисленное)"
msgstr "Включить драйвер (по умолчанию: авто, 0 = отключено, 1 = включено, 2 = без головы) (целочисленное)"
#: source/ubl-settings-bootloader.h:162
msgid "Disable kernel/abi16 acceleration (целочисленное)"
msgstr "Отключить ускорение ядра/abi16 (целочисленное)"
#: source/ubl-settings-bootloader.h:162
msgid "Use kernel modesetting [KMS] (0=disable, 1=on, -1=force vga console preference [default]) (целочисленное)"
msgstr "Использовать настройку режима ядра [KMS] (0=отключить, 1=включить, -1=принудительно настроить консоль vga [по умолчанию]) (целочисленное)"
#: source/ubl-settings-bootloader.h:162
msgid "Enable frame buffer compression for power savings (default: -1 (use per-chip default)) (целочисленное)"
msgstr "Включить сжатие кадрового буфера для экономии энергии (по умолчанию: -1 (используйте значение по умолчанию для каждого чипа)) (целочисленное)"
#: source/ubl-settings-bootloader.h:162
msgid "Enable power-saving display C-states. (-1=auto [default]; 0=disable; 1=up to DC5; 2=up to DC6; 3=up to DC5 with DC3CO; 4=up to DC6 with DC3CO) (целочисленное)"
msgstr "Включить энергосберегающее отображение C-состояний. (-1=авто [по умолчанию]; 0=отключить; 1=до DC5; 2=до DC6; 3=до DC5 с DC3CO; 4=до DC6 с DC3CO) (целочисленное)"
#: source/ubl-settings-bootloader.h:162
msgid "Enable PSR (0=disabled, 1=enabled) (целочисленное)"
msgstr "Включить PSR (0=выключено, 1=включено) (целочисленное)"
#: source/ubl-settings-bootloader.h:162
msgid "Disable display power wells when possible (-1=auto [default], 0=power wells always on, 1=power wells disabled when possible) (целочисленное)"
msgstr "Отключить отображение энергетических колодцев, когда это возможно (-1=авто [по умолчанию], 0=энергетические колодцы всегда включены, 1=энергетические колодцы отключены, когда это возможно) (целочисленное)"
#: source/ubl-settings-bootloader.h:162
msgid "Enable IPS (default: true) (целочисленное)"
msgstr "Включить IPS (по умолчанию: true) (целочисленное)"
#: source/ubl-settings-bootloader.h:162
msgid "Try to skip unnecessary mode sets at boot time (0=disabled, 1=enabled) Default: -1 (use per-chip default) (целочисленное)"
msgstr "Попробовать пропустить ненужные наборы режимов во время загрузки (0=отключено, 1=включено). По умолчанию: -1 (используйте настройки по умолчанию для каждого чипа) (целочисленное)"
#: source/ubl-settings-bootloader.h:162
msgid "Disable display (default: false) (логическое значение)"
msgstr "Отключить отображение (по умолчанию: false) (логическое значение)"
#: source/ubl-settings-bootloader.h:162
msgid "Enable GuC load for GuC submission and/or HuC load. Required functionality can be selected using bitmask values. (-1=auto [default], 0=disable, 1=GuC submission, 2=HuC load) (целочисленное)"
msgstr "Включить загрузку GuC для отправки GuC и/или загрузки HuC. Требуемую функциональность можно выбрать с помощью значений битовой маски. (-1=авто [по умолчанию], 0=отключить, 1=отправка GuC, 2=загрузка HuC) (целочисленное)"
#: source/ubl-settings-bootloader.h:162
msgid "Enable multi-stream transport (MST) for new DisplayPort sinks. (default: true) (логическое значение)"
msgstr "Включить многопотоковую передачу (MST) для новых приемников DisplayPort. (по умолчанию: true) (логическое значение)"
#: source/ubl-settings-bootloader.h:162
msgid "Enable support for Intel GVT-g graphics virtualization host support (default:false) (логическое значение)"
msgstr "Включить поддержку хоста виртуализации графики Intel GVT-g (по умолчанию: false) (логическое значение)"
#: source/ubl-settings-bootloader.h:162
msgid "Marvell SATA via AHCI (1 = enabled) (целочисленное)"
msgstr "Marvell SATA через AHCI (1 = включено) (целочисленное)"
#: source/ubl-settings-bootloader.h:162
msgid "Default LPM policy for mobile chipsets (default:-1) (целочисленное)"
msgstr "Политика LPM по умолчанию для мобильных чипсетов (по умолчанию:-1) (целочисленное)"
#: source/ubl-settings-bootloader.h:162
msgid "Force the DSP driver for Intel DSP (0=auto, 1=legacy, 2=SST, 3=SOF) (целочисленное)"
msgstr "Принудительно установить драйвер DSP для Intel DSP (0=авто, 1=устаревший, 2=SST, 3=SOF) (целочисленное)"
#: source/ubl-settings-bootloader.h:162
msgid "Do not use ACPI _CST for building the idle states list (default:N) (логическое значение)"
msgstr "Не использовать ACPI _CST для создания списка состояний простоя (по умолчанию: N) (логическое значение)"
#: source/ubl-settings-bootloader.h:162
msgid "Use ACPI _CST for building the idle states list (default:N) (логическое значение)"
msgstr "Используйте ACPI _CST для создания списка состояний простоя (по умолчанию: N) (логическое значение)"
#: source/ubl-settings-bootloader.h:162
msgid "Prevents the processor from going into a deep sleep state (default:9) (целочисленное)"
msgstr "Предотвращает переход процессора в состояние глубокого сна (по умолчанию: 9) (целочисленное)"
#: source/ubl-settings-bootloader.h:162
msgid "Eliminates flickering laptop display on Ultra Voltage processors (целочисленное)"
msgstr "Устраняет мерцание дисплея ноутбука на процессорах сверхнапряжения (целочисленное)"
#: source/ubl-settings-bootloader.h:162
msgid "Mask of disabled idle states (0=disabled, 1=enabled) Default: 0 (целочисленное)"
msgstr "Маска отключенных состояний простоя (0=отключено, 1=включено) По умолчанию: 0 (целочисленное)"
#: source/ubl-settings-bootloader.h:162
msgid "Default autosuspend delay (-1=disabled) (целочисленное)"
msgstr "Задержка автоприостановки по умолчанию (-1=отключено) (целочисленное)"
#: source/ubl-settings-bootloader.h:162
msgid "Force dont`t load nouveau driver video for Nvidia" msgid "Force dont`t load nouveau driver video for Nvidia"
msgstr "Принудительно не загружать видео драйвера nouveau для Nvidia" msgstr "Принудительно не загружать видео драйвера nouveau для Nvidia"
Loading…
Cancel
Save