Menu window; Saving fixes

pull/83/head
parent 2525224a0f
commit 3de416883a

@ -1,91 +1,190 @@
#include "ubl-settings-bootloader.h"
void on_menu_chosen(GtkWidget *widget, dictionary *dict) {
yon_menu_item *item = yon_dictionary_get_data(dict->first, yon_menu_item *);
main_window *widgets = yon_dictionary_get_data(dict->first->next, main_window *);
gtk_entry_set_text(GTK_ENTRY(widgets->OSEntry), item->target);
yon_menu_window *window = yon_dictionary_get_data(dict->first->next->next, yon_menu_window *);
GdkDisplay *display = gdk_display_get_default();
GdkSeat *seat = gdk_display_get_default_seat(display);
gdk_seat_ungrab(seat);
gtk_widget_destroy(window->MenuWindow);
}
void on_submenu_open(GtkWidget *widget, dictionary *dict) {
yon_menu_window *window = yon_dictionary_get_data(dict->first, yon_menu_window *);
yon_menu_item *item = yon_dictionary_get_data(dict->first->next, yon_menu_item *);
main_window *widgets = yon_dictionary_get_data(dict->first->next->next, main_window *);
on_children_clean(NULL, window);
void on_menu_chosen(GtkWidget *, yon_menu_item *item){
gtk_entry_set_text(GTK_ENTRY(item->widgets->OSDefaultEntry),item->target);
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_list_box_insert(GTK_LIST_BOX(window->ChildrenListBox), child->MenuItemBox, -1);
dictionary *child_dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(child_dict, "item", child);
yon_dictionary_add_or_create_if_exists_with_data(child_dict, "widgets", widgets);
yon_dictionary_add_or_create_if_exists_with_data(child_dict, "window", window);
g_signal_connect(G_OBJECT(child->MenuButton), "clicked", G_CALLBACK(on_menu_chosen), child_dict);
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);
gtk_revealer_set_reveal_child(GTK_REVEALER(window->ItemsRevealer), FALSE);
gtk_revealer_set_reveal_child(GTK_REVEALER(window->ChildrenRevealer), TRUE);
}
yon_menu_window *yon_menu_window_open(GtkWidget *widget, main_window *widgets) {
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));
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');
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, ">");
yon_menu_item *item = yon_dictionary_get(window->menu_items, parameter[0]);
if (!item) {
item = yon_menu_item_new();
gtk_widget_hide(item->NextIconButton);
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) {
if (!item->children) item->children = NULL;
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]);
yon_dictionary_add_or_create_if_exists_with_data(item->children, parameter[1], item_child);
dictionary *sub_dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(sub_dict, "window", window);
yon_dictionary_add_or_create_if_exists_with_data(sub_dict, "item", item);
yon_dictionary_add_or_create_if_exists_with_data(sub_dict, "widgets", widgets);
g_signal_connect(G_OBJECT(item->MenuButton), "clicked", G_CALLBACK(on_submenu_open), sub_dict);
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 {
dictionary *item_dict = NULL;
yon_dictionary_add_or_create_if_exists_with_data(item_dict, "item", item);
yon_dictionary_add_or_create_if_exists_with_data(item_dict, "widgets", widgets);
yon_dictionary_add_or_create_if_exists_with_data(item_dict, "window", window);
g_signal_connect(G_OBJECT(item->MenuButton), "clicked", G_CALLBACK(on_menu_chosen), item_dict);
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, x2, y2, width;
gdk_window_get_position(gtk_widget_get_window(widgets->MenuButton), &x, &y);
gtk_widget_translate_coordinates(widgets->MenuButton, widgets->Window, x, y, &x2, &y2);
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 + x2 - width, y + y2);
}
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);
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);
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;
}

@ -127,6 +127,17 @@ void yon_interface_update(main_window *widgets){
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;
@ -147,7 +158,7 @@ void yon_interface_update(main_window *widgets){
}
{
char *ringtone = config(GRUB_PLAY_parameter);
gsize size;
gsize size=0;
config_str codes = yon_window_config_get_section("melodies",&size);
GtkTreeIter iter;
@ -400,7 +411,21 @@ void on_parameter_changed(GtkWidget *self,main_window *widgets){
}
}
yon_config_remove_by_key(GRUB_TIMEOUT_parameter);
} //else
} 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_parameter,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)){
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)
@ -415,7 +440,7 @@ void yon_main_window_complete(main_window *widgets){
gtk_box_pack_start(GTK_BOX(widgets->InterfaceBox),yon_gtk_builder_get_widget(builder,"BoxMain"),1,1,0);
// Custom widgets configuration
{
widgets->BootDisplayMode = yon_gtk_builder_get_widget(builder,"BootDisplayMode");
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");
@ -460,10 +485,12 @@ void yon_main_window_complete(main_window *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->BootSelectionTimerSpin),"changed",G_CALLBACK(on_parameter_changed),widgets);
g_signal_connect(G_OBJECT(widgets->BootDisplayMode),"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);

@ -105,7 +105,7 @@ extern config main_config;
typedef struct {
template_window_fields
GtkWidget *BootDisplayMode;
GtkWidget *BootDisplayModeCombo;
GtkWidget *BootRingtoneAddButton;
GtkWidget *BootRingtoneEditButton;
GtkWidget *BootRingtoneRemoveButton;
@ -241,8 +241,11 @@ typedef struct {
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 {
@ -253,6 +256,9 @@ typedef struct {
char *target;
main_window *widgets;
yon_menu_window *window;
dictionary *children;
} yon_menu_item;
@ -261,6 +267,8 @@ 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_chosen(GtkWidget *,dictionary *dict);
void on_submenu_open(GtkWidget *,dictionary *dict);
void on_children_clean(GtkWidget*, yon_menu_window *window);
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);

@ -29,6 +29,12 @@
#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 PASSWORD_TITLE_LABEL _("Password input")
#define PASSWORD_REPEAT_LABEL _("Repeat password:")
#define PASSWORD_HASH_LABEL _("Password hash:")

@ -35,18 +35,33 @@
<property name="transition-type">none</property>
<property name="reveal-child">True</property>
<child>
<object class="GtkListBox" id="ItemsListBox">
<object class="GtkScrolledWindow">
<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="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>
<property name="label" translatable="yes">OS options were not found</property>
<style>
<class name="workingbg"/>
</style>
<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>
@ -63,7 +78,6 @@
</child>
<child>
<object class="GtkRevealer" id="ChildrenRevealer">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="transition-type">none</property>
<child>
@ -130,15 +144,30 @@
</packing>
</child>
<child>
<object class="GtkListBox" id="ChildrenListBox">
<object class="GtkScrolledWindow">
<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="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>
<property name="label" translatable="yes">Children options were not found</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>

@ -196,7 +196,7 @@
<child>
<object class="GtkEntry" id="OSDefaultEntry">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">True</property>
@ -251,9 +251,16 @@
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="BootDisplayMode">
<object class="GtkComboBoxText" id="BootDisplayModeCombo">
<property name="visible">True</property>
<property name="can-focus">False</property>
<items>
<item translatable="yes">Default</item>
<item id="splash" translatable="yes">Boot animation with log</item>
<item id="splash quiet ub.silent" translatable="yes">Boot animation without log</item>
<item id="quiet ub.silent" translatable="yes">No boot animation with log</item>
<item id="plymouth.enable=0" translatable="yes">No boot animation with shortened log</item>
</items>
</object>
<packing>
<property name="expand">True</property>

@ -69,7 +69,7 @@ msgstr ""
msgid "Output terminal"
msgstr ""
#: source/ubl-strings.h:17 source/ubl-strings.h:47
#: source/ubl-strings.h:17 source/ubl-strings.h:53
msgid "Administrator"
msgstr ""
@ -118,89 +118,109 @@ msgid "Cancel"
msgstr ""
#: source/ubl-strings.h:32
msgid "Boot animation with log"
msgstr ""
#: source/ubl-strings.h:33
msgid "Boot animation without log"
msgstr ""
#: source/ubl-strings.h:34
msgid "No boot animation with log"
msgstr ""
#: source/ubl-strings.h:35
msgid "No boot animation without log"
msgstr ""
#: source/ubl-strings.h:36
msgid "Back"
msgstr ""
#: source/ubl-strings.h:38
msgid "Password input"
msgstr ""
#: source/ubl-strings.h:33 source/ubl-strings.h:40
#: source/ubl-strings.h:39 source/ubl-strings.h:46
msgid "Repeat password:"
msgstr ""
#: source/ubl-strings.h:34 source/ubl-strings.h:42
#: source/ubl-strings.h:40 source/ubl-strings.h:48
msgid "Password hash:"
msgstr ""
#: source/ubl-strings.h:35 source/ubl-strings.h:41
#: source/ubl-strings.h:41 source/ubl-strings.h:47
msgid "Do not encrypt password"
msgstr ""
#: source/ubl-strings.h:36
#: source/ubl-strings.h:42
msgid "Password contain special symbols"
msgstr ""
#: source/ubl-strings.h:37
#: source/ubl-strings.h:43
msgid "Empty important field"
msgstr ""
#: source/ubl-strings.h:38
#: source/ubl-strings.h:44
msgid "Password mismatch"
msgstr ""
#: source/ubl-strings.h:39
#: source/ubl-strings.h:45
msgid "Password:"
msgstr ""
#: source/ubl-strings.h:43
#: source/ubl-strings.h:49
msgid "Password must be at least"
msgstr ""
#: source/ubl-strings.h:43
#: source/ubl-strings.h:49
msgid "characters"
msgstr ""
#: source/ubl-strings.h:45
#: source/ubl-strings.h:51
msgid "Add user"
msgstr ""
#: source/ubl-strings.h:46
#: source/ubl-strings.h:52
msgid "Edit user"
msgstr ""
#: source/ubl-strings.h:48
#: source/ubl-strings.h:54
msgid "User name:"
msgstr ""
#: source/ubl-strings.h:49
#: source/ubl-strings.h:55
msgid "User password:"
msgstr ""
#: source/ubl-strings.h:50
#: source/ubl-strings.h:56
msgid "Are you sure you want to remove user"
msgstr ""
#: source/ubl-strings.h:50
#: source/ubl-strings.h:56
msgid "from boot menu users"
msgstr ""
#: source/ubl-strings.h:52
#: source/ubl-strings.h:58
msgid "Add ringtone"
msgstr ""
#: source/ubl-strings.h:53
#: source/ubl-strings.h:59
msgid "Edit ringtone"
msgstr ""
#: source/ubl-strings.h:54
#: source/ubl-strings.h:60
msgid "Chosen"
msgstr ""
#: source/ubl-strings.h:55
#: source/ubl-strings.h:61
msgid "Name:"
msgstr ""
#: source/ubl-strings.h:56
#: source/ubl-strings.h:62
msgid "Melody code:"
msgstr ""
#: source/ubl-strings.h:57
#: source/ubl-strings.h:63
msgid "Are you sure you want to remove ringtone"
msgstr ""

@ -69,7 +69,7 @@ msgstr "Терминал для ввода"
msgid "Output terminal"
msgstr "Терминал для вывода"
#: source/ubl-strings.h:17 source/ubl-strings.h:47
#: source/ubl-strings.h:17 source/ubl-strings.h:53
msgid "Administrator"
msgstr "Администратор"
@ -118,90 +118,110 @@ msgid "Cancel"
msgstr "Отменить"
#: source/ubl-strings.h:32
msgid "Boot animation with log"
msgstr "Анимация загрузки с журналом"
#: source/ubl-strings.h:33
msgid "Boot animation without log"
msgstr "Анимация загрузки без журнала"
#: source/ubl-strings.h:34
msgid "No boot animation with log"
msgstr "Отсутствие анимации загрузки с выводом журнала"
#: source/ubl-strings.h:35
msgid "No boot animation with shortened log"
msgstr "Отсутствие анимации загрузки б выводом сокращённого журнала"
#: source/ubl-strings.h:36
msgid "Back"
msgstr "Назад"
#: source/ubl-strings.h:38
msgid "Password input"
msgstr "Ввод пароля"
#: source/ubl-strings.h:33 source/ubl-strings.h:40
#: source/ubl-strings.h:39 source/ubl-strings.h:46
msgid "Repeat password:"
msgstr "Подтвердите ввод пароля:"
#: source/ubl-strings.h:34 source/ubl-strings.h:42
#: source/ubl-strings.h:40 source/ubl-strings.h:48
msgid "Password hash:"
msgstr "Хэш пароля"
#: source/ubl-strings.h:35 source/ubl-strings.h:41
#: source/ubl-strings.h:41 source/ubl-strings.h:47
msgid "Do not encrypt password"
msgstr "Не шифровать пароль"
#: source/ubl-strings.h:36
#: source/ubl-strings.h:42
msgid "Password contain special symbols"
msgstr "Пароль содержит специальные символы"
#: source/ubl-strings.h:37
#: source/ubl-strings.h:43
msgid "Empty important field"
msgstr "Пустое важное поле"
#: source/ubl-strings.h:38
#: source/ubl-strings.h:44
msgid "Password mismatch"
msgstr "Пароли не совпадают"
#: source/ubl-strings.h:39
#: source/ubl-strings.h:45
msgid "Password:"
msgstr "Пароль:"
#: source/ubl-strings.h:43
#: source/ubl-strings.h:49
msgid "Password must be at least"
msgstr "Пароль состоять из по крайней мере"
#: source/ubl-strings.h:43
#: source/ubl-strings.h:49
msgid "characters"
msgstr "символов"
#: source/ubl-strings.h:45
#: source/ubl-strings.h:51
msgid "Add user"
msgstr "Добавить пользователя"
#: source/ubl-strings.h:46
#: source/ubl-strings.h:52
msgid "Edit user"
msgstr "Редактировать пользователя"
#: source/ubl-strings.h:48
#: source/ubl-strings.h:54
msgid "User name:"
msgstr "Имя пользователя:"
#: source/ubl-strings.h:49
#: source/ubl-strings.h:55
msgid "User password:"
msgstr "Пароль пользователя:"
#: source/ubl-strings.h:50
#: source/ubl-strings.h:56
msgid "Are you sure you want to remove user"
msgstr "Вы уверены что хотите удалить пользователя"
#: source/ubl-strings.h:50
#: source/ubl-strings.h:56
msgid "from boot menu users"
msgstr "из пользователей меню загрузчика"
#: source/ubl-strings.h:52
#: source/ubl-strings.h:58
msgid "Add ringtone"
msgstr "Добавить мелодию"
#: source/ubl-strings.h:53
#: source/ubl-strings.h:59
msgid "Edit ringtone"
msgstr "Изменение мелодии"
#: source/ubl-strings.h:54
#: source/ubl-strings.h:60
msgid "Chosen"
msgstr "Выбран"
#: source/ubl-strings.h:55
#: source/ubl-strings.h:61
msgid "Name:"
msgstr "Название:"
#: source/ubl-strings.h:56
#: source/ubl-strings.h:62
msgid "Melody code:"
msgstr "Код мелодии:"
#: source/ubl-strings.h:57
#: source/ubl-strings.h:63
msgid "Are you sure you want to remove ringtone"
msgstr "Вы уверены что хотите удалить мелодию"

Loading…
Cancel
Save