diff --git a/source/ubl-settings-bootloader-menu.c b/source/ubl-settings-bootloader-menu.c index d9289ff..bceac2b 100644 --- a/source/ubl-settings-bootloader-menu.c +++ b/source/ubl-settings-bootloader-menu.c @@ -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"); - - 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],¶m_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_rooty_rootx_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;idata)); + 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; +} \ No newline at end of file diff --git a/source/ubl-settings-bootloader.c b/source/ubl-settings-bootloader.c index a15985b..bbc7739 100644 --- a/source/ubl-settings-bootloader.c +++ b/source/ubl-settings-bootloader.c @@ -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); diff --git a/source/ubl-settings-bootloader.h b/source/ubl-settings-bootloader.h index ab5556a..0f8e2c2 100644 --- a/source/ubl-settings-bootloader.h +++ b/source/ubl-settings-bootloader.h @@ -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); \ No newline at end of file +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); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 1a39bcd..c369810 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -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:") diff --git a/ubl-settings-bootloader-menu.glade b/ubl-settings-bootloader-menu.glade index 1ae2a36..a4205a7 100644 --- a/ubl-settings-bootloader-menu.glade +++ b/ubl-settings-bootloader-menu.glade @@ -35,18 +35,33 @@ none True - + True - False - none - - + True + never + 50 + 200 + + True False - OS options were not found - + + + True + False + none + + + True + False + OS options were not found + + + + + @@ -63,7 +78,6 @@ - True False none @@ -130,15 +144,30 @@ - + True - False - none - - + True + never + 50 + 175 + + True False - Children options were not found + + + True + False + none + + + True + False + Children options were not found + + + + diff --git a/ubl-settings-bootloader.glade b/ubl-settings-bootloader.glade index 1c640a8..afee83e 100644 --- a/ubl-settings-bootloader.glade +++ b/ubl-settings-bootloader.glade @@ -196,7 +196,7 @@ True - True + False True @@ -251,9 +251,16 @@ - + True False + + Default + Boot animation with log + Boot animation without log + No boot animation with log + No boot animation with shortened log + True diff --git a/ubl-settings-bootloader.pot b/ubl-settings-bootloader.pot index 01adb02..62f4718 100644 --- a/ubl-settings-bootloader.pot +++ b/ubl-settings-bootloader.pot @@ -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 "" diff --git a/ubl-settings-bootloader_ru.po b/ubl-settings-bootloader_ru.po index fb330e4..b42af90 100644 --- a/ubl-settings-bootloader_ru.po +++ b/ubl-settings-bootloader_ru.po @@ -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 "Вы уверены что хотите удалить мелодию"