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~
test.cpp
.vscode
.vscode/
ubl-settings-bootloader
ubl-settings-bootloader_ru.po~
*~
build/
compile/
*#
terminal-commands/
compile/
source/ubl-cmake.h
vgcore*
.BUILD.md
.updatebuild.sh
.install.sh

@ -11,8 +11,8 @@ CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile
DEPENDS = /bin/cmake
PREFIX ?= /usr/local
PKGNAME = $(MAKEFILE_DIR)
FILE_VER = source/${PKGNAME}.cc
PKGIDENT = $(subst /,-,$(subst /usr,,${PREFIX}))
FILE_VER = source/${PKGNAME}.h
PKGIDENT=$(subst /,-,${PREFIX})
default_target: all
@ -72,6 +72,7 @@ check:
build: depend prepare
@echo "Build ..."; \
$(MAKE_COMMAND) --directory=${CMAKE_BUILD_DIR}; \
sed -r "s/^(string version_application).*/\1;/" -i ${FILE_VER}; \
echo "Build: OK"
uninstall:
@ -93,13 +94,7 @@ uninstall:
done
@$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}"
@$(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/${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 \
[ -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; \
@ -121,23 +116,19 @@ install: check uninstall
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"; \
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
@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 -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}${PREFIX}/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/${PKGNAME}/" grub-terminal-input.csv
@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
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/com.ublinux.${PKGNAME}${PKGIDENT}.policy"
@ldconfig -n /usr/local/lib
@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; \
[ -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
@echo "Install: OK"
@ -147,7 +138,6 @@ clean:
@if [ -d ${CMAKE_BUILD_DIR} ]; then \
echo "Clean: error, compile directory exist ${CMAKE_BUILD_DIR}"; \
else \
sed -r "s/^(string version_application).*/\1;/" -i ${FILE_VER}; \
echo "Clean: OK"; \
fi
@ -157,7 +147,7 @@ help:
echo "... init"; \
echo "... debug"; \
echo "... prepare"; \
echo "... build"; \
echo "... compile"; \
echo "... install"; \
echo "... uninstall"; \
echo "... clean"

@ -2,6 +2,11 @@
<gresources>
<gresource prefix="/com/ublinux/ui">
<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 prefix="/com/ublinux/css">
<file>ubl-settings-bootloader.css</file>
@ -9,4 +14,9 @@
<gresource prefix="/com/ublinux/images">
<file>ubl-settings-bootloader-banner.png</file>
</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>

@ -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,4 +3,4 @@ console|PC BIOS & EFI console
serial|Serial terminal
ofconsole|Open Firmware Console
at_keyboard|PC AT Keyboard (Coreboot)
usb_keyboard|USB Keyboard (HID Boot protocol)
usb_keyboard|USB Keyboard (HID Boot protocol)
1 Option Description
3 serial Serial terminal
4 ofconsole Open Firmware Console
5 at_keyboard PC AT Keyboard (Coreboot)
6 usb_keyboard USB Keyboard (HID Boot protocol)

@ -3,4 +3,4 @@ console|PC BIOS & EFI console
serial|Serial terminal
ofconsole|Open Firmware Console
gfxterm|Output in graphical mode
vga_text|VGA text output (Coreboot)
vga_text|VGA text output (Coreboot)
1 Option Description
3 serial Serial terminal
4 ofconsole Open Firmware Console
5 gfxterm Output in graphical mode
6 vga_text VGA text output (Coreboot)

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

@ -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,166 +1,157 @@
.textHead{
text-shadow: 2px 2px @theme_bg_color;
color: @theme_text_color;
}
.boxInfoMessError{
background-color: #ea9999;
}
.boxInfoMessOK{
background-color: #f3f0ac;
.thin {
margin:0px;
padding:0px;
}
.bannerbackground {
background-color: #404040;
.noborder {
border:none;
}
.view_app {
background-color: @theme_bg_color;
.borders {
border:1px;
}
.view_app.view.cell:selected {
background-color:@theme_selected_bg_color;
color:@theme_selected_text_color;
transition: 10ms ease-out;
border-radius: 3px;
.nobackground {
background:transparent;
}
#GnomeIcon{
border-style:solid;
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;
.nobackground:active {
background:transparent;
}
#SepIcon{
background-color: alpha(@theme_text_color, 0.6);
.textHead{
text-shadow: 2px 2px @theme_bg_color;
color: @theme_text_color;
}
#iconlabel {
font-size:14px;
font-weight: bold;
}
.roundborder * {
border-width:0px;
border-radius:5px;
}
.noborder {
border: none;
}
.menu:hover {
border-color:alpha(@theme_text_color, 0.01);
}
.menu {
border-color:alpha(@theme_text_color, 0.01);
.inherited>* {
border:none;
background:inherit;
}
.menu:hover >* {
border-color:alpha(@theme_text_color, 0.01);
.workingbg {
background:@theme_base_color;
}
.menuitembottom{
margin-top:0px;
margin-bottom:3px;
}
.menuitemmiddle{
margin-top:0px;
margin-bottom:0px;
}
margin-top:0px;
margin-bottom:3px;
border-color:inherit;
border-left-width:inherit;
border-right-width:inherit;
}
.menuitemmiddle{
margin-top:0px;
margin-bottom:0px;
border-color:inherit;
border-left-width:inherit;
border-right-width:inherit;
}
.menuitemtop{
margin-bottom:0px;
}
.menuitemtop *{
margin:2px 2px 0 2px;
padding: 5px 10px 3px 5px;
}
.menuitemmiddle *{
margin:0 2px 0 2px;
padding: 3px 10px 3px 5px;
}
.menuitembottom *{
margin:0 2px 2px 2px;
padding: 3px 10px 5px 5px;
}
.menuitemtop:hover {
background:@theme_bg_color;
border-color:inherit;
border-left-width:inherit;
border-right-width:inherit;
}
.menuitemmiddle:hover {
background:@theme_bg_color;
border-color:inherit;
border-left-width:inherit;
border-right-width:inherit;
}
.menuitembottom:hover {
background:@theme_bg_color;
border-color:inherit;
border-left-width:inherit;
border-right-width:inherit;
}
.menuitemtop:hover* {
margin:2px 2px 0 2px;
padding: 5px 10px 3px 5px;
background:@theme_selected_bg_color;
border-radius:2px;
}
.menuitemmiddle:hover* {
margin:0 2px 0 2px;
padding: 3px 10px 3px 5px;
background:@theme_selected_bg_color;
border-radius:2px;
}
.menuitembottom:hover* {
margin:0 2px 2px 2px;
padding: 3px 10px 5px 5px;
background:@theme_selected_bg_color;
border-radius:2px;
.menuitemtop{
margin-bottom:0px;
border-color:inherit;
border-top-width:inherit;
border-left-width:inherit;
border-right-width:inherit;
}
.menuitemtop >*{
margin:4px 2px 0 2px;
padding: 3px 10px 3px 5px;
border:transparent;
}
.menuitemmiddle >*{
margin:0 2px 0 2px;
padding: 3px 10px 3px 5px;
border:transparent;
}
.menuitembottom >*{
margin:0 2px 2px 2px;
padding: 3px 10px 3px 5px;
}
.menuitemtop:hover {
background:@theme_bg_color;
border-color:inherit;
border-top-width:inherit;
border-left-width:inherit;
border-right-width:inherit;
}
.menuitemmiddle:hover {
background:@theme_bg_color;
border-color:inherit;
border-left-width:inherit;
border-right-width:inherit;
}
.menuitembottom:hover {
background:@theme_bg_color;
border-color:inherit;
border-bottom-width:0px;
border-left-width:inherit;
border-right-width:inherit;
}
.menuitemtop:hover>* {
margin:4px 2px 0 2px;
padding: 3px 10px 3px 5px;
background:@theme_selected_bg_color;
border-radius:2px;
}
.menuitemmiddle:hover>* {
margin:0 2px 0 2px;
padding: 3px 10px 3px 5px;
background:@theme_selected_bg_color;
border-radius:2px;
}
.menuitembottom:hover>* {
margin:0 2px 2px 2px;
padding: 3px 10px 3px 5px;
background:@theme_selected_bg_color;
border-radius:2px;
}
.boxInfoMessError{
background-color: #ea9999;
}
.workingbg, #workingbg {
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;
background-image: none;
.boxInfoMessOK{
background-color: #f3f0ac;
}
.noborder{
border:none;
.errorBox {
border-width: 2px;
border-color: #ea9999;
border-style:solid;
}
.bkim{
opacity:0.99;
border:none;
.chosenOutline{
transition: 0ms;
border-width: 1px;
border-color: #f3f0ac;
border-style:solid;
}
.bkim_no_plug{
background-color: transparent;
opacity:0.99;
.separatorTop{
border-color: darker (@theme_bg_color);
border-top-width:1px;
border-style:solid;
}
.thin{
margin:0px;
padding: 0px;
.separatorBottom{
border-color: darker (@theme_bg_color);
border-bottom-width:1px;
border-style:solid;
}
.nobg{
background: none;
.marginright image{
margin-right: 2px;
}
.addbg * {
background-color: @theme_bg_color;
.menunoborder {
border-radius: 0;
border:none;
}
.addbg_revealer * {
background-color: @theme_base_color;
.menunoborder:active {
border-radius: 0;
border:none;
}
.offset_revealer{
border-width: 1px;
border-style: solid;
border-color: @theme_text_color;
.menunoborder:hover {
border-radius: 0;
border:none;
}
.bultar {
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-Transfer-Encoding: 8bit\n"
msgid "Edit"
msgstr ""
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"
#: source/ubl-strings.h:2
msgid "System boot"
msgstr ""
msgid "Lack of loading animation with the output of the abbreviated log"
#: source/ubl-strings.h:3
msgid "Configuring system boot parameters"
msgstr ""
msgid "Delete melody"
msgstr "Удалить мелодию"
msgid "Melody added"
#: source/ubl-strings.h:5
msgid "Boot menu"
msgstr ""
msgid "User added"
#: source/ubl-strings.h:6
msgid "Boot selection menu timer:"
msgstr ""
msgid "Melody deleted"
#: source/ubl-strings.h:7
msgid "seconds"
msgstr ""
msgid "User deleted"
#: source/ubl-strings.h:8
msgid "Default"
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 ""
msgid "Enter name and password in the \"Boot Menu Users\" field"
#: source/ubl-strings.h:10
msgid "Load screen display mode:"
msgstr ""
#: source/ubl-strings.h:11
msgid "Boot Menu Users"
msgstr ""
msgid "Title"
msgstr ""
msgid ""
msgstr ""
msgid "Password"
msgstr ""
msgid "Administrator"
#: source/ubl-strings.h:12
msgid "Startup ringtone"
msgstr ""
msgid "Select"
msgstr ""
msgid "Melody code"
msgstr ""
msgid "Ringtone at startup"
msgstr ""
#: source/ubl-settings-bootloader.h:53 source/ubl-settings-bootloader.h:52
#: source/ubl-settings-bootloader.cc:431 source/ubl-settings-bootloader.cc:301
msgid "About"
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"
#: source/ubl-strings.h:13
msgid "Parameters passed to the kernel"
msgstr ""
#: source/ubl-settings-bootloader.h:45 source/ubl-settings-bootloader.h:44
#: 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
#: source/ubl-strings.h:14
msgid "Command line parameters:"
msgstr ""
#: source/ubl-settings-bootloader.h:42 source/ubl-settings-bootloader.h:41
#: 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
#: source/ubl-strings.h:15
msgid "Input terminal"
msgstr ""
#: source/ubl-settings-bootloader.h:75 source/ubl-settings-bootloader.h:74
#: 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
#: source/ubl-strings.h:16
msgid "Output terminal"
msgstr ""
msgid "PC AT Keyboard (Coreboot)"
msgstr ""
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)"
#: source/ubl-strings.h:18 source/ubl-strings.h:55
msgid "Administrator"
msgstr ""
#: 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"
#: source/ubl-strings.h:19
msgid "Name"
msgstr ""
#: source/ubl-settings-bootloader.h:72 source/ubl-settings-bootloader.h:71
msgid "User password to enter boot configuration edit mode"
#: source/ubl-strings.h:20
msgid "User"
msgstr ""
msgid "VGA text output (Coreboot)"
#: source/ubl-strings.h:21
msgid "Password"
msgstr ""
#: source/ubl-settings-bootloader.h:69 source/ubl-settings-bootloader.h:68
msgid "Would you like to read documentation in the Web?"
#: source/ubl-strings.h:22
msgid "Melody code"
msgstr ""
#: source/ubl-settings-bootloader.h:70 source/ubl-settings-bootloader.h:69
msgid ""
"You will be redirected to documentation website where documentation is\n"
"translated and supported by community."
#: source/ubl-strings.h:23
msgid "Option"
msgstr ""
msgid "acpi=off (Disable ACPI)"
#: source/ubl-strings.h:24
msgid "Description"
msgstr ""
msgid "ahci.mobile_jpm_policy=1 (Maximum performance, power management)"
#: source/ubl-strings.h:26
msgid "Add"
msgstr ""
msgid "apic (Disable APIC)"
#: source/ubl-strings.h:27
msgid "Edit"
msgstr ""
msgid "at_keyboard (Keyboard PC AT (Coreboot))"
#: source/ubl-strings.h:28
msgid "Remove"
msgstr ""
msgid "console (PC BIOS & console EFI)"
#: source/ubl-strings.h:30
msgid "Accept"
msgstr ""
msgid "gfxterm (Output in graphical mode)"
#: source/ubl-strings.h:31
msgid "Cancel"
msgstr ""
#: 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"
#: source/ubl-strings.h:33
msgid "Boot animation with log"
msgstr ""
#: source/ubl-settings-bootloader.cc:860 source/ubl-settings-bootloader.cc:400
msgid ""
"https://wiki.ublinux.com/ru/Программное_обеспечениерограммы_и_утилиты/Все/"
#: source/ubl-strings.h:34
msgid "Boot animation without log"
msgstr ""
msgid "i915.enable_dc=0 (Disable GPU power management)"
#: source/ubl-strings.h:35
msgid "No boot animation with log"
msgstr ""
msgid ""
"intel_idle max_cstate=1 (Prevents the processor from going into a deep sleep "
"state)"
#: source/ubl-strings.h:36
msgid "No boot animation with shortened log"
msgstr ""
msgid ""
"intel_idle.max_cstate=4 (Eliminates flickering laptop display on processors "
"Ultra Voltage)"
#: source/ubl-strings.h:37
msgid "Back"
msgstr ""
msgid "no plymouth (Disable Plymouth)"
#: source/ubl-strings.h:38
msgid "Default (Use last succeeded)"
msgstr ""
msgid "nolapic (Disable local APIC)"
#: source/ubl-strings.h:40
msgid "Password input"
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 ""
msgid "ofconsole (Console Open Firmware)"
#: source/ubl-strings.h:42 source/ubl-strings.h:50
msgid "Password hash:"
msgstr ""
msgid "quiet (Downloading without text messages)"
#: source/ubl-strings.h:43 source/ubl-strings.h:49
msgid "Do not encrypt password"
msgstr ""
#: source/ubl-settings-bootloader.h:47 source/ubl-settings-bootloader.h:46
#: source/ubl-settings-bootloader.cc:425
msgid "seconds"
#: source/ubl-strings.h:44
msgid "Password contain special symbols"
msgstr ""
msgid "serial (Serial terminal)"
#: source/ubl-strings.h:45
msgid "Empty important field"
msgstr ""
msgid "single (Single User Mode)"
#: source/ubl-strings.h:46
msgid "Password mismatch"
msgstr ""
msgid ""
"snd-intel-dspcfg.dsp_driver=1 (Forced selection of a sound device driver "
"from Intel)"
#: source/ubl-strings.h:47
msgid "Password:"
msgstr ""
msgid "splash (Show welcome window)"
#: source/ubl-strings.h:51
msgid "Password must be at least"
msgstr ""
#: 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"
#: source/ubl-strings.h:51
msgid "characters"
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: "
#: source/ubl-strings.h:53
msgid "Add user"
msgstr ""
msgid "usb_keyboard (Keyboard USB Keyboard (protocol HID Boot))"
#: source/ubl-strings.h:54
msgid "Edit user"
msgstr ""
msgid "vga_text (Text output VGA (Coreboot))"
#: source/ubl-strings.h:56
msgid "User name:"
msgstr ""
#: source/ubl-settings-bootloader.cc:450
msgid "Нет анимации загрузки, полный журнал"
#: source/ubl-strings.h:57
msgid "User password:"
msgstr ""
#: source/ubl-settings-bootloader.h:162
msgid "Last succeeded load mode"
#: source/ubl-strings.h:58
msgid "Are you sure you want to remove user"
msgstr ""
#: source/ubl-settings-bootloader.h:162
msgid "Disable Plymouth"
#: source/ubl-strings.h:58
msgid "from boot menu users"
msgstr ""
#: source/ubl-settings-bootloader.h:162
msgid "Write debug output into /var/log/plymouth-debug.log"
#: source/ubl-strings.h:60
msgid "Add ringtone"
msgstr ""
#: source/ubl-settings-bootloader.h:162
msgid "Disable ACPI"
#: source/ubl-strings.h:61
msgid "Edit ringtone"
msgstr ""
#: source/ubl-settings-bootloader.h:162
msgid "Disable APIC"
#: source/ubl-strings.h:62
msgid "Chosen"
msgstr ""
#: source/ubl-settings-bootloader.h:162
msgid "Disable local APIC"
#: source/ubl-strings.h:63
msgid "Name:"
msgstr ""
#: source/ubl-settings-bootloader.h:162
msgid "Single User Mode"
#: source/ubl-strings.h:64
msgid "Melody code:"
msgstr ""
#: source/ubl-settings-bootloader.h:162
msgid "Disable kernel selection and loading of video drivers"
#: source/ubl-strings.h:65
msgid "Are you sure you want to remove ringtone"
msgstr ""
#: source/ubl-settings-bootloader.h:162
msgid "enable driver (default: auto, 0 = disabled, 1 = enabled, 2 = headless) (int)"
#: source/ubl-strings.h:65
msgid "Enable driver (default: auto, 0 = disabled, 1 = enabled, 2 = headless) (int)"
msgstr ""
#: source/ubl-settings-bootloader.h:162
msgid "disable kernel/abi16 acceleration (int)"
#: source/ubl-strings.h:65
msgid "Disable kernel/abi16 acceleration (int)"
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)"
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)"
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)"
msgstr ""
#: source/ubl-settings-bootloader.h:162
#: source/ubl-strings.h:65
msgid "Enable PSR (0=disabled, 1=enabled) (int)"
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)"
msgstr ""
#: source/ubl-settings-bootloader.h:162
#: source/ubl-strings.h:65
msgid "Enable IPS (default: true) (int)"
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)"
msgstr ""
#: source/ubl-settings-bootloader.h:162
#: source/ubl-strings.h:65
msgid "Disable display (default: false) (bool)"
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)"
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)"
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)"
msgstr ""
#: source/ubl-settings-bootloader.h:162
#: source/ubl-strings.h:65
msgid "Marvell SATA via AHCI (1 = enabled) (int)"
msgstr ""
#: source/ubl-settings-bootloader.h:162
#: source/ubl-strings.h:65
msgid "Default LPM policy for mobile chipsets (default:-1) (int)"
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)"
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)"
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)"
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)"
msgstr ""
#: source/ubl-settings-bootloader.h:162
#: source/ubl-strings.h:65
msgid "Eliminates flickering laptop display on Ultra Voltage processors (int)"
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)"
msgstr ""
#: source/ubl-settings-bootloader.h:162
msgid "default autosuspend delay (-1=disabled) (int)"
msgstr ""
#: source/ubl-settings-bootloader.h:162
msgid "Force dont`t load nouveau driver video for Nvidia"
#: source/ubl-strings.h:65
msgid "Default autosuspend delay (-1=disabled) (int)"
msgstr ""

@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ubl-settings-bootloader 1.0\n"
"Report-Msgid-Bugs-To: info@ublinux.com\n"
"POT-Creation-Date: 2023-04-25 15:27+0600\n"
"PO-Revision-Date: 2020-02-22 23:28+0600\n"
"POT-Creation-Date: 2023-01-01 00:00+0600\n"
"PO-Revision-Date: 2025-04-17 23:28+0600\n"
"Last-Translator: ublinux <info@ublinux.ru>\n"
"Language-Team: Russian - UBLinux Team <info@ublinux.ru>\n"
"Language: Russian\n"
@ -17,463 +17,374 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "Edit"
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-strings.h:2
msgid "System boot"
msgstr "Загрузка системы"
#: source/ubl-settings-bootloader.h:67 source/ubl-settings-bootloader.h:66
msgid "Boot menu user password:"
msgstr "Пароль пользователя меню загрузки:"
#: source/ubl-strings.h:3
msgid "Configuring system boot parameters"
msgstr "Настройка параметров загрузки системы"
#: source/ubl-settings-bootloader.h:64 source/ubl-settings-bootloader.h:63
msgid "Boot screen display mode:"
msgstr "Режим отображения экрана загрузки:"
#: source/ubl-strings.h:5
msgid "Boot menu"
msgstr "Менб загрузки"
#: source/ubl-settings-bootloader.h:51 source/ubl-settings-bootloader.h:50
#: source/ubl-strings.h:6
msgid "Boot selection menu timer:"
msgstr "Таймер меню выбора варианта загрузки:"
#: source/ubl-settings-bootloader.h:62 source/ubl-settings-bootloader.h:61
msgid "Cancel"
msgstr "Отменить"
#: source/ubl-strings.h:7
msgid "seconds"
msgstr "секунд"
#: source/ubl-settings-bootloader.h:45 source/ubl-settings-bootloader.h:44
#: 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:"
msgstr "Параметры командной строки:"
#: source/ubl-strings.h:8
msgid "Default"
msgstr "По умлочанию"
#: source/ubl-settings-bootloader.h:42 source/ubl-settings-bootloader.h:41
#: source/ubl-settings-bootloader.cc:417 source/ubl-settings-bootloader.cc:285
msgid "Configuring system boot parameters"
msgstr "Настройка параметров загрузки системы"
#: source/ubl-strings.h:9
msgid "Default OS:"
msgstr "Загрузка по умлочанию:"
msgid "Configuring the boot loader settings"
msgstr "Настройка параметров загрузчика системы"
#: source/ubl-strings.h:10
msgid "Load screen display mode:"
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-strings.h:11
msgid "Boot Menu Users"
msgstr "Пользователи меню загрузчика"
#: source/ubl-settings-bootloader.cc:292
#, fuzzy
msgid "Default download"
msgstr "По умолчанию"
#: source/ubl-strings.h:12
msgid "Startup ringtone"
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 "Описание"
#: source/ubl-strings.h:13
msgid "Parameters passed to the kernel"
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 "Меню загрузки"
#: source/ubl-strings.h:14
msgid "Command line parameters:"
msgstr "Параметры командной строки:"
msgid "Downloading without text messages"
msgstr "Загрузка без текстовых сообщений"
#: source/ubl-strings.h:15
msgid "Input terminal"
msgstr "Терминал для ввода"
msgid "Eliminates flickering laptop display on Ultra Voltage processors"
msgstr "Устраняет мерцание дисплея ноутбука на процессорах Ultra Voltage"
#: source/ubl-strings.h:16
msgid "Output terminal"
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-strings.h:18 source/ubl-strings.h:55
msgid "Administrator"
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-strings.h:19
msgid "Name"
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
#, fuzzy
msgid "Error saved local and global configuration"
msgstr "Успешно записаны локальная и глобальная конфигурация"
#: source/ubl-strings.h:20
msgid "User"
msgstr "Пользователь"
msgid "Forced selection of an Intel sound device driver"
msgstr "Принудительный выбор драйвера звукового устройства от Intel"
#: source/ubl-strings.h:21
msgid "Password"
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-strings.h:22
msgid "Melody code"
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 ""
"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-strings.h:23
msgid "Option"
msgstr "Опция"
#: source/ubl-settings-bootloader.h:75 source/ubl-settings-bootloader.h:74
#: source/ubl-settings-bootloader.cc:451
msgid "Lack of loading animation with the\noutput of the abbreviated log"
msgstr "Отсутствие анимации загрузки с\nвыводом сокращенного журнала"
#: source/ubl-strings.h:24
msgid "Description"
msgstr "Описание"
msgid "Lack of loading animation with the output of the abbreviated log"
msgstr "Отсутствие анимации загрузки с выводом сокращенного журнала"
#: source/ubl-strings.h:26
msgid "Add"
msgstr "Добавить"
#, fuzzy
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
#, fuzzy
msgid "Load menu user name:"
msgstr "Имя пользователя меню загрузки:"
#: source/ubl-strings.h:27
msgid "Edit"
msgstr "Редактировать"
#: source/ubl-settings-bootloader.cc:443
#, fuzzy
msgid "Load menu user password:"
msgstr "Пароль пользователя меню загрузки:"
#: source/ubl-strings.h:28
msgid "Remove"
msgstr "Удалить"
#: source/ubl-settings-bootloader.cc:429 source/ubl-settings-bootloader.cc:298
msgid "Load option timer"
msgstr ""
#: source/ubl-strings.h:30
msgid "Accept"
msgstr "Принять"
#: source/ubl-settings-bootloader.cc:441
#, fuzzy
msgid "Load screen display mode:"
msgstr "Режим отображения экрана загрузки:"
#: source/ubl-strings.h:31
msgid "Cancel"
msgstr "Отменить"
#: source/ubl-settings-bootloader.h:73 source/ubl-settings-bootloader.h:72
#: source/ubl-settings-bootloader.cc:448
msgid "Loading animation with log"
#: source/ubl-strings.h:33
msgid "Boot 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"
#: source/ubl-strings.h:34
msgid "Boot 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-strings.h:35
msgid "No boot animation with log"
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-strings.h:36
msgid "No boot animation with shortened log"
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-strings.h:37
msgid "Back"
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-strings.h:38
msgid "Default (Use last succeeded)"
msgstr "По умолчанию (Последняя удачная загрузка)"
#: source/ubl-settings-bootloader.cc:445 source/ubl-settings-bootloader.cc:447
msgid "Manually"
msgstr "Вручную"
#: source/ubl-strings.h:40
msgid "Password input"
msgstr "Ввод пароля"
msgid "Maximum performance, power management"
msgstr "Максимальная производительность, управление питанием"
#: source/ubl-strings.h:41 source/ubl-strings.h:48
msgid "Repeat password:"
msgstr "Подтвердите ввод пароля:"
#: source/ubl-settings-bootloader.h:65 source/ubl-settings-bootloader.h:64
msgid "No loading animation,\nfull log"
msgstr "Отсутствие анимации загрузки\nс выводом журнала"
#: source/ubl-strings.h:42 source/ubl-strings.h:50
msgid "Password hash:"
msgstr "Хэш пароля"
msgid "No loading animation, full log"
msgstr "Отсутствие анимации загрузки с выводом журнала"
#: source/ubl-strings.h:43 source/ubl-strings.h:49
msgid "Do not encrypt password"
msgstr "Не шифровать пароль"
#: source/ubl-settings-bootloader.cc:444 source/ubl-settings-bootloader.cc:446
msgid "Not available"
msgstr "Отсутствует"
#: source/ubl-strings.h:44
msgid "Password contain special symbols"
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 "Нечего сохранять!"
#: source/ubl-strings.h:45
msgid "Empty important field"
msgstr "Пустое важное поле"
msgid "Open Firmware Console"
msgstr "Консоль Open Firmware"
#: source/ubl-strings.h:46
msgid "Password mismatch"
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 "Опция"
#: source/ubl-strings.h:47
msgid "Password:"
msgstr "Пароль:"
msgid "Output in graphical mode"
msgstr "Вывод в графическом режиме"
#: source/ubl-strings.h:51
msgid "Password must be at least"
msgstr "Пароль состоять из по крайней мере"
#: source/ubl-settings-bootloader.cc:296
msgid "Output terminal"
msgstr "Терминал для вывода"
msgid "PC AT Keyboard (Coreboot)"
msgstr "Клавиатура PC AT (Coreboot)"
#: source/ubl-strings.h:51
msgid "characters"
msgstr "символов"
msgid "PC BIOS & EFI console"
msgstr "PC BIOS & консоль EFI"
#: source/ubl-strings.h:53
msgid "Add user"
msgstr "Добавить пользователя"
msgid "Parameters passed to the kernel"
msgstr "Параметры, передаваемые ядру"
#: source/ubl-strings.h:54
msgid "Edit user"
msgstr "Редактировать пользователя"
msgid "Prevents the processor from going into a deep sleep state"
msgstr "Предотвращает переход процессора в состояние глубокого сна"
#: source/ubl-strings.h:56
msgid "User name:"
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-strings.h:57
msgid "User password:"
msgstr "Пароль пользователя:"
#: source/ubl-settings-bootloader.h:61 source/ubl-settings-bootloader.h:60
msgid "Read online"
msgstr "Прочитать онлайн"
#: source/ubl-strings.h:58
msgid "Are you sure you want to remove user"
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-strings.h:58
msgid "from boot menu users"
msgstr "из пользователей меню загрузчика"
msgid "Boot Menu Users"
msgstr "Пользователи меню загрузчика"
#: source/ubl-strings.h:60
msgid "Add ringtone"
msgstr "Добавить мелодию"
msgid "Title"
msgstr "Название"
#: source/ubl-strings.h:61
msgid "Edit ringtone"
msgstr "Изменение мелодии"
msgid "User"
msgstr "Пользователь"
#: source/ubl-strings.h:62
msgid "Chosen"
msgstr "Выбран"
msgid "Enter the name and code of the tune in the \"Ringtone at startup\" field"
msgstr "Введите название и код мелодии в поле \"Мелодия при загрузке\""
#: source/ubl-strings.h:63
msgid "Name:"
msgstr "Название:"
msgid "Enter name and password in the \"Boot Menu Users\" field"
msgstr "Введите имя и пароль в поле \"Пользователи меню загрузчика\""
#: source/ubl-strings.h:64
msgid "Melody code:"
msgstr "Код мелодии:"
msgid "Password"
msgstr "Пароль"
#: source/ubl-strings.h:65
msgid "Are you sure you want to remove ringtone"
msgstr "Вы уверены что хотите удалить мелодию"
msgid "Melody added"
msgstr "Мелодия добавлена"
#: source/ubl-strings.h:65
msgid ""
"Enable driver (default: auto, 0 = disabled, 1 = enabled, 2 = headless) (int)"
msgstr ""
"Включить драйвер (по умолчанию: авто, 0 = отключено, 1 = включено, 2 = без "
"головы) (целочисленное)"
msgid "User added"
msgstr "Пользователь добавлен"
#: source/ubl-strings.h:65
msgid "Disable kernel/abi16 acceleration (int)"
msgstr "Отключить ускорение ядра/abi16 (целочисленное)"
msgid "Melody deleted"
msgstr "Мелодия удалена"
#: source/ubl-strings.h:65
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"
msgstr "Пользователь удалён"
#: source/ubl-strings.h:65
msgid ""
"Enable frame buffer compression for power savings (default: -1 (use per-chip "
"default)) (int)"
msgstr ""
"Включить сжатие кадрового буфера для экономии энергии (по умолчанию: -1 "
"(используйте значение по умолчанию для каждого чипа)) (целочисленное)"
msgid "Administrator"
msgstr "Администратор"
#: 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)"
msgstr ""
"Включить энергосберегающее отображение C-состояний. (-1=авто [по умолчанию]; "
"0=отключить; 1=до DC5; 2=до DC6; 3=до DC5 с DC3CO; 4=до DC6 с DC3CO) "
"(целочисленное)"
msgid "Select"
msgstr "Выбор"
#: source/ubl-strings.h:65
msgid "Enable PSR (0=disabled, 1=enabled) (int)"
msgstr "Включить PSR (0=выключено, 1=включено) (целочисленное)"
msgid "Melody code"
msgstr "Код мелодии"
#: 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)"
msgstr ""
"Отключить отображение энергетических колодцев, когда это возможно (-1=авто "
"[по умолчанию], 0=энергетические колодцы всегда включены, 1=энергетические "
"колодцы отключены, когда это возможно) (целочисленное)"
msgid "Ringtone at startup"
msgstr "Мелодия при загрузке"
#: source/ubl-strings.h:65
msgid "Enable IPS (default: true) (int)"
msgstr "Включить IPS (по умолчанию: true) (целочисленное)"
#: 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-strings.h:65
msgid ""
"Try to skip unnecessary mode sets at boot time (0=disabled, 1=enabled) "
"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-settings-bootloader.cc:433 source/ubl-settings-bootloader.cc:303
msgid "Save in local configuration"
msgstr "Сохранить в локальную конфигурацию"
#: source/ubl-strings.h:65
msgid "Disable display (default: false) (bool)"
msgstr "Отключить отображение (по умолчанию: false) (логическое значение)"
#: 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-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)"
msgstr ""
"Включить загрузку GuC для отправки GuC и/или загрузки HuC. Требуемую "
"функциональность можно выбрать с помощью значений битовой маски. (-1=авто "
"[по умолчанию], 0=отключить, 1=отправка GuC, 2=загрузка HuC) (целочисленное)"
#: source/ubl-settings-bootloader.cc:293
#, fuzzy
msgid "Seconds"
msgstr "секунд"
#: source/ubl-strings.h:65
msgid ""
"Enable multi-stream transport (MST) for new DisplayPort sinks. (default: "
"true) (bool)"
msgstr ""
"Включить многопотоковую передачу (MST) для новых приемников DisplayPort. (по "
"умолчанию: true) (логическое значение)"
msgid "Serial terminal"
msgstr "Последовательный терминал"
#: source/ubl-strings.h:65
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
msgid "Setting bootloader"
msgstr "Настройка загрузчика"
#: source/ubl-strings.h:65
msgid "Marvell SATA via AHCI (1 = enabled) (int)"
msgstr "Marvell SATA через AHCI (1 = включено) (целочисленное)"
msgid "Show welcome window"
msgstr "Показывать окно приветствия"
#: source/ubl-strings.h:65
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-settings-bootloader.cc:920 source/ubl-settings-bootloader.cc:464
msgid "Successfully saved local and global configuration"
msgstr "Успешно записаны локальная и глобальная конфигурация"
#: source/ubl-strings.h:65
msgid ""
"Force the DSP driver for Intel DSP (0=auto, 1=legacy, 2=SST, 3=SOF) (int)"
msgstr ""
"Принудительно установить драйвер DSP для Intel DSP (0=авто, 1=устаревший, "
"2=SST, 3=SOF) (целочисленное)"
#: 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-strings.h:65
msgid ""
"Do not use ACPI _CST for building the idle states list (default:N) (bool)"
msgstr ""
"Не использовать ACPI _CST для создания списка состояний простоя (по "
"умолчанию: N) (логическое значение)"
#: source/ubl-settings-bootloader.h:49 source/ubl-settings-bootloader.h:48
#: source/ubl-settings-bootloader.cc:427
#, fuzzy
msgid "Terminal for input"
msgstr "Терминал для ввода"
#: source/ubl-strings.h:65
msgid "Use ACPI _CST for building the idle states list (default:N) (bool)"
msgstr ""
"Используйте ACPI _CST для создания списка состояний простоя (по умолчанию: "
"N) (логическое значение)"
#: source/ubl-settings-bootloader.h:50 source/ubl-settings-bootloader.h:49
#: source/ubl-settings-bootloader.cc:428
#, fuzzy
msgid "Terminal for output"
msgstr "Терминал для вывода"
#: source/ubl-strings.h:65
msgid ""
"Prevents the processor from going into a deep sleep state (default:9) (int)"
msgstr ""
"Предотвращает переход процессора в состояние глубокого сна (по умолчанию: 9) "
"(целочисленное)"
#: source/ubl-settings-bootloader.cc:299
msgid "The last selection will become the default boot choice"
msgstr "Последний выбор станет выбором загрузки по умолчанию"
#: source/ubl-strings.h:65
msgid "Eliminates flickering laptop display on Ultra Voltage processors (int)"
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 "Программа должна быть запущена с правами суперпользователя!"
#: source/ubl-strings.h:65
msgid "Mask of disabled idle states (0=disabled, 1=enabled) Default: 0 (uint)"
msgstr ""
"Маска отключенных состояний простоя (0=отключено, 1=включено) По умолчанию: "
"0 (целочисленное)"
msgid "UBConfig - Loading"
msgstr "UBConfig - Загрузка"
#: source/ubl-strings.h:65
msgid "Default autosuspend delay (-1=disabled) (int)"
msgstr "Задержка автоприостановки по умолчанию (-1=отключено) (целочисленное)"
msgid "USB Keyboard (HID Boot protocol)"
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"
msgstr ""
"Имя пользователя для входа в режим редактирования конфигурации загрузки"
#: source/ubl-settings-bootloader.h:72 source/ubl-settings-bootloader.h:71
msgid "User password to enter boot configuration edit mode"
msgstr ""
"Пароль пользователя для входа в режим редактирования конфигурации загрузки"
@ -481,11 +392,9 @@ msgstr ""
msgid "VGA text output (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?"
msgstr "Вы хотите прочитать справку в Сети?"
#: source/ubl-settings-bootloader.h:70 source/ubl-settings-bootloader.h:69
msgid ""
"You will be redirected to documentation website where documentation is\n"
"translated and supported by community."
@ -513,36 +422,22 @@ msgstr "Консоль (PC BIOS & console EFI)"
msgid "gfxterm (Output in graphical mode)"
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)"
msgstr "i915.enable_dc=0 (Отключите управление питанием GPU)"
msgid ""
"intel_idle max_cstate=1 (Prevents the processor from going into a deep sleep "
"state)"
"intel_idle max_cstate=1 (Prevents the processor from going into a deep "
"sleep state)"
msgstr ""
"intel_idle max_cstate=1 (Предотвращает переход процессора в состояние "
"глубокого сна)"
msgid ""
"intel_idle.max_cstate=4 (Eliminates flickering laptop display on processors "
"Ultra Voltage)"
"intel_idle.max_cstate=4 (Eliminates flickering laptop display on "
"processors Ultra Voltage)"
msgstr ""
"intel_idle.max_cstate=4 (Устраняет мерцание дисплея ноутбука на процессорах "
"Ultra Voltage)"
"intel_idle.max_cstate=4 (Устраняет мерцание дисплея ноутбука на "
"процессорах Ultra Voltage)"
msgid "no plymouth (Disable Plymouth)"
msgstr "no plymouth (Отключить Plymouth"
@ -559,11 +454,6 @@ msgstr "ofconsole (Консоль Open Firmware)"
msgid "quiet (Downloading without text messages)"
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)"
msgstr "serial (Последовательный терминал)"
@ -580,15 +470,6 @@ msgstr ""
msgid "splash (Show welcome window)"
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: "
msgstr "ubl-settings-bootloader версия: "
@ -598,137 +479,29 @@ msgstr "usb_keyboard (Клавиатура USB Keyboard (protocol HID Boot))"
msgid "vga_text (Text output 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"
msgstr "Последний удачный вариант загрузки"
#: source/ubl-settings-bootloader.h:162
msgid "Disable Plymouth"
msgstr "Отключить Плимут"
#: source/ubl-settings-bootloader.h:162
msgid "Write debug output into /var/log/plymouth-debug.log"
msgstr "Записать выходные данные отладки в /var/log/plymouth-debug.log"
#: source/ubl-settings-bootloader.h:162
msgid "Disable ACPI"
msgstr "Отключить ACPI"
#: source/ubl-settings-bootloader.h:162
msgid "Disable APIC"
msgstr "Отключить APIC"
#: source/ubl-settings-bootloader.h:162
msgid "Disable local APIC"
msgstr "Отключить локальный APIC"
#: source/ubl-settings-bootloader.h:162
msgid "Single User Mode"
msgstr "Однопользовательский режим"
#: source/ubl-settings-bootloader.h:162
msgid "Disable kernel selection and loading of video drivers"
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"
msgstr "Принудительно не загружать видео драйвера nouveau для Nvidia"
msgstr "Принудительно не загружать видео драйвера nouveau для Nvidia"

Loading…
Cancel
Save