Menu window; Saving fixes

pull/83/head
parent 2525224a0f
commit 3de416883a

@ -1,91 +1,190 @@
#include "ubl-settings-bootloader.h" #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; dictionary *dact = NULL;
for_dictionaries(dact, item->children) { for_dictionaries(dact,item->children){
yon_menu_item *child = yon_dictionary_get_data(dact, yon_menu_item *); yon_menu_item *child = yon_dictionary_get_data(dact,yon_menu_item*);
gtk_list_box_insert(GTK_LIST_BOX(window->ChildrenListBox), child->MenuItemBox, -1); gtk_widget_hide(child->NextIconButton);
gtk_list_box_insert(GTK_LIST_BOX(window->ChildrenListBox),child->MenuItemBox,-1);
dictionary *child_dict = NULL; g_signal_connect(G_OBJECT(child->MenuButton),"clicked",G_CALLBACK(on_menu_chosen),dact->data);
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);
} }
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(); yon_menu_window *window = yon_menu_window_new();
gtk_window_set_transient_for(GTK_WINDOW(window->MenuWindow),GTK_WINDOW(widgets->Window));
int size; int size;
config_str parsed = yon_config_load(get_menus_entry_command, &size); config_str parsed = yon_config_load(get_menus_entry_command,&size);
for (int i=0;i<size;i++){
for (int i = 0; i < size; i++) { yon_char_remove_last_symbol(parsed[i],'\n');
yon_char_remove_last_symbol(parsed[i], '\n');
int param_size; int param_size;
config_str parameter = yon_char_parse(parsed[i], &param_size, ">"); config_str parameter = yon_char_parse(parsed[i],&param_size,">");
dictionary * cur_item = NULL;
yon_menu_item *item = yon_dictionary_get(window->menu_items, parameter[0]); if (param_size==2&&(cur_item=yon_dictionary_get(&window->menu_items,parameter[0]))){
if (!item) { yon_menu_item *item = (yon_menu_item*)cur_item->data;
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;
yon_menu_item *item_child = yon_menu_item_new(); yon_menu_item *item_child = yon_menu_item_new();
gtk_widget_hide(item_child->NextIconButton); gtk_widget_hide(item_child->NextIconButton);
gtk_label_set_text(GTK_LABEL(item_child->MenuTextLabel), parameter[1]); gtk_label_set_text(GTK_LABEL(item_child->MenuTextLabel),parameter[1]);
item_child->target = yon_char_new(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); gtk_widget_show(item_child->MenuItemBox);
yon_dictionary_add_or_create_if_exists_with_data(item->children,parameter[1],item_child);
dictionary *sub_dict = NULL; item_child->widgets=widgets;
yon_dictionary_add_or_create_if_exists_with_data(sub_dict, "window", window); item_child->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);
} else { } else {
dictionary *item_dict = NULL; yon_menu_item *item = yon_menu_item_new();
yon_dictionary_add_or_create_if_exists_with_data(item_dict, "item", item); item->widgets=widgets;
yon_dictionary_add_or_create_if_exists_with_data(item_dict, "widgets", widgets); item->window=window;
yon_dictionary_add_or_create_if_exists_with_data(item_dict, "window", window); gtk_label_set_text(GTK_LABEL(item->MenuTextLabel),parameter[0]);
g_signal_connect(G_OBJECT(item->MenuButton), "clicked", G_CALLBACK(on_menu_chosen), item_dict); 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); int x,y,width;
gtk_widget_translate_coordinates(widgets->MenuButton, widgets->Window, x, y, &x2, &y2); gdk_window_get_position(gtk_widget_get_window(widgets->MenuButton),&x,&y);
gtk_window_get_size(GTK_WINDOW(window->MenuWindow), &width, NULL); gtk_widget_translate_coordinates(widgets->MenuButton,widgets->Window,x,y,&window->button_pos_x,&window->button_pos_y);
gtk_window_get_position(GTK_WINDOW(widgets->Window), &x, &y); gtk_window_get_size(GTK_WINDOW(window->MenuWindow),&width,NULL);
gtk_window_move(GTK_WINDOW(window->MenuWindow), x + x2 - width, y + y2); 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_realize(window->MenuWindow);
gtk_widget_show(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; 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_spin_button_set_value(GTK_SPIN_BUTTON(widgets->BootSelectionTimerSpin),0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->BootSelectionTimerCheck),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; GtkTreeIter iter;
int users_size; int users_size;
@ -147,7 +158,7 @@ void yon_interface_update(main_window *widgets){
} }
{ {
char *ringtone = config(GRUB_PLAY_parameter); char *ringtone = config(GRUB_PLAY_parameter);
gsize size; gsize size=0;
config_str codes = yon_window_config_get_section("melodies",&size); config_str codes = yon_window_config_get_section("melodies",&size);
GtkTreeIter iter; GtkTreeIter iter;
@ -400,7 +411,21 @@ void on_parameter_changed(GtkWidget *self,main_window *widgets){
} }
} }
yon_config_remove_by_key(GRUB_TIMEOUT_parameter); 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) /**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); gtk_box_pack_start(GTK_BOX(widgets->InterfaceBox),yon_gtk_builder_get_widget(builder,"BoxMain"),1,1,0);
// Custom widgets configuration // 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->BootRingtoneAddButton = yon_gtk_builder_get_widget(builder,"BootRingtoneAddButton");
widgets->BootRingtoneEditButton = yon_gtk_builder_get_widget(builder,"BootRingtoneEditButton"); widgets->BootRingtoneEditButton = yon_gtk_builder_get_widget(builder,"BootRingtoneEditButton");
widgets->BootRingtoneRemoveButton = yon_gtk_builder_get_widget(builder,"BootRingtoneRemoveButton"); 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->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->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->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->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->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->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->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets);

@ -105,7 +105,7 @@ extern config main_config;
typedef struct { typedef struct {
template_window_fields template_window_fields
GtkWidget *BootDisplayMode; GtkWidget *BootDisplayModeCombo;
GtkWidget *BootRingtoneAddButton; GtkWidget *BootRingtoneAddButton;
GtkWidget *BootRingtoneEditButton; GtkWidget *BootRingtoneEditButton;
GtkWidget *BootRingtoneRemoveButton; GtkWidget *BootRingtoneRemoveButton;
@ -241,8 +241,11 @@ typedef struct {
GtkWidget *ChildrenRevealer; GtkWidget *ChildrenRevealer;
GtkWidget *ChildrenListBox; GtkWidget *ChildrenListBox;
int seat_grab;
dictionary *menu_items; dictionary *menu_items;
char *cur_selection; char *cur_selection;
int button_pos_x;
int button_pos_y;
} yon_menu_window; } yon_menu_window;
typedef struct { typedef struct {
@ -253,6 +256,9 @@ typedef struct {
char *target; char *target;
main_window *widgets;
yon_menu_window *window;
dictionary *children; dictionary *children;
} yon_menu_item; } 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 *); gboolean on_menu_clicked(GtkWidget *, GdkEventButton *, yon_menu_window *);
yon_menu_window *yon_menu_window_new(); yon_menu_window *yon_menu_window_new();
yon_menu_item *yon_menu_item_new(); yon_menu_item *yon_menu_item_new();
void on_menu_chosen(GtkWidget *,dictionary *dict); void on_menu_window_size_reallocated(GtkWidget *,GtkAllocation *,yon_menu_window *window);
void on_submenu_open(GtkWidget *,dictionary *dict); 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); 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 ACCEPT_LABEL _("Accept")
#define CANCE_LABEL _("Cancel") #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_TITLE_LABEL _("Password input")
#define PASSWORD_REPEAT_LABEL _("Repeat password:") #define PASSWORD_REPEAT_LABEL _("Repeat password:")
#define PASSWORD_HASH_LABEL _("Password hash:") #define PASSWORD_HASH_LABEL _("Password hash:")

@ -35,18 +35,33 @@
<property name="transition-type">none</property> <property name="transition-type">none</property>
<property name="reveal-child">True</property> <property name="reveal-child">True</property>
<child> <child>
<object class="GtkListBox" id="ItemsListBox"> <object class="GtkScrolledWindow">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">True</property>
<property name="selection-mode">none</property> <property name="hscrollbar-policy">never</property>
<child type="placeholder"> <property name="min-content-height">50</property>
<object class="GtkLabel"> <property name="max-content-height">200</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">OS options were not found</property> <child>
<style> <object class="GtkListBox" id="ItemsListBox">
<class name="workingbg"/> <property name="visible">True</property>
</style> <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> </object>
</child> </child>
</object> </object>
@ -63,7 +78,6 @@
</child> </child>
<child> <child>
<object class="GtkRevealer" id="ChildrenRevealer"> <object class="GtkRevealer" id="ChildrenRevealer">
<property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="transition-type">none</property> <property name="transition-type">none</property>
<child> <child>
@ -130,15 +144,30 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkListBox" id="ChildrenListBox"> <object class="GtkScrolledWindow">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">True</property>
<property name="selection-mode">none</property> <property name="hscrollbar-policy">never</property>
<child type="placeholder"> <property name="min-content-height">50</property>
<object class="GtkLabel"> <property name="max-content-height">175</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</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> </object>
</child> </child>
</object> </object>

@ -196,7 +196,7 @@
<child> <child>
<object class="GtkEntry" id="OSDefaultEntry"> <object class="GtkEntry" id="OSDefaultEntry">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">True</property> <property name="can-focus">False</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
@ -251,9 +251,16 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkComboBoxText" id="BootDisplayMode"> <object class="GtkComboBoxText" id="BootDisplayModeCombo">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</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> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>

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

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

Loading…
Cancel
Save