From a81fdce2a84052b1917c9abe4c17d225d42afc6d Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 28 Jan 2026 18:48:31 +0600 Subject: [PATCH] Grub menu fixes --- source/ubl-settings-bootloader-menu.c | 21 +++++++++++--- source/ubl-settings-bootloader.c | 42 +++++++++++++++++++++------ source/ubl-settings-bootloader.h | 3 +- 3 files changed, 52 insertions(+), 14 deletions(-) diff --git a/source/ubl-settings-bootloader-menu.c b/source/ubl-settings-bootloader-menu.c index 3c6d285..e09b25a 100644 --- a/source/ubl-settings-bootloader-menu.c +++ b/source/ubl-settings-bootloader-menu.c @@ -5,14 +5,17 @@ void yon_menu_open_submenu(yon_menu_window *window, yon_menu_item *item){ int size; config_str options = yon_config_load(get_menus_entry_command,&size); + bind_textdomain_codeset("ublinux-init-grub-functions","UTF-8"); + textdomain("ublinux-init-grub-functions"); + for (int i=1;i"); int name_size; - config_str name_parsed = yon_char_parse(parsed[1],&name_size,">"); + config_str name_parsed = yon_char_parse(_(parsed[1]),&name_size,">"); if (yon_char_parsed_check_exist(id_parsed,id_size,item->id)==0){ yon_menu_item *subitem = yon_menu_add_item(window,parsed[0],name_parsed[1],0); gtk_list_box_insert(GTK_LIST_BOX(window->ChildrenListBox),subitem->MenuItemRow,-1); @@ -23,6 +26,8 @@ void yon_menu_open_submenu(yon_menu_window *window, yon_menu_item *item){ yon_char_parsed_free(name_parsed,name_size); yon_char_parsed_free(parsed,parsed_size); } + textdomain(LocaleName); + } void yon_menu_ungrab(yon_menu_window *window){ @@ -45,7 +50,7 @@ void on_menu_chosen(GtkWidget *, GtkListBoxRow* row, yon_menu_window *window){ gtk_revealer_set_reveal_child(GTK_REVEALER(window->ChildrenRevealer),1); } else { gtk_entry_set_text(GTK_ENTRY(window->target),item->name); - yon_config_register(GRUB_DEFAULT_parameter,DEFAULT_MENU_ITEM_LABEL,item->id); + yon_config_register(GRUB_DEFAULT_parameter,GRUB_DEFAULT_command,item->id); yon_menu_ungrab(window); } @@ -68,6 +73,7 @@ yon_menu_item *yon_menu_add_item(yon_menu_window *target_menu,const char *id, co } yon_menu_window *yon_menu_window_open(GtkWidget *, main_window *widgets){ + yon_menu_window *window = yon_menu_window_new(); window->target = widgets->OSDefaultEntry; g_signal_connect(G_OBJECT(window->ItemsListBox),"row-activated",G_CALLBACK(on_menu_chosen),window); @@ -80,12 +86,18 @@ yon_menu_window *yon_menu_window_open(GtkWidget *, main_window *widgets){ } int size; + textdomain("ublinux-init-grub-functions"); + config_str options = yon_config_load(get_menus_entry_command,&size); GHashTable *created = g_hash_table_new(g_str_hash,g_str_equal); for (int i=1;i"))){ @@ -100,13 +112,14 @@ yon_menu_window *yon_menu_window_open(GtkWidget *, main_window *widgets){ if (!g_hash_table_contains(created,parsed[0])){ g_hash_table_add(created,parsed[0]); - yon_menu_item *item = yon_menu_add_item(window,parsed[0],parsed[1],have_children); + yon_menu_item *item = yon_menu_add_item(window,parsed[0],_(parsed[1]),have_children); gtk_list_box_insert(GTK_LIST_BOX(window->ItemsListBox),item->MenuItemRow,-1); if (!have_children){ gtk_widget_hide(item->ArrowImage); } } } + textdomain(LocaleName); g_hash_table_unref(created); yon_char_parsed_free(options,size); gtk_window_set_transient_for(GTK_WINDOW(window->MenuWindow), GTK_WINDOW(widgets->Window)); diff --git a/source/ubl-settings-bootloader.c b/source/ubl-settings-bootloader.c index 0d62fbc..71c0ffb 100644 --- a/source/ubl-settings-bootloader.c +++ b/source/ubl-settings-bootloader.c @@ -5,7 +5,7 @@ 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,""); + char *final_output = yon_char_parsed_to_string(output,size,"\n"); if (final_output){ printf("%s\n",final_output); free(final_output); @@ -136,6 +136,32 @@ void yon_load_proceed(YON_CONFIG_TYPE type){ } } +char *yon_bootloader_get_os_name(char *parameter){ + bind_textdomain_codeset("ublinux-init-grub-functions","UTF-8"); + textdomain("ublinux-init-grub-functions"); + char *final_os_name = NULL; + int size; + config_str menu_entries = yon_config_load(get_menus_entry_command,&size); + for (int i=0;i"); + if (!yon_char_is_empty(name)){ + name++; + final_os_name = yon_char_new(name); + } else { + final_os_name = yon_char_new(_(parsed[1])); + } + } + yon_char_parsed_free(parsed,parsed_size); + } + yon_char_parsed_free(menu_entries,size); + textdomain(LocaleName); + return final_os_name; +} + void yon_interface_update(main_window *widgets){ gtk_list_store_clear(widgets->BootUsersList); gtk_list_store_clear(widgets->BootRingtoneList); @@ -169,7 +195,11 @@ void yon_interface_update(main_window *widgets){ { char *grub_default = config(GRUB_DEFAULT_parameter); if (!yon_char_is_empty(grub_default)) { - gtk_entry_set_text(GTK_ENTRY(widgets->OSDefaultEntry),grub_default); + char *os_name = yon_bootloader_get_os_name(grub_default); + if (!yon_char_is_empty(os_name)){ + gtk_entry_set_text(GTK_ENTRY(widgets->OSDefaultEntry),os_name); + free(os_name); + } } else { gtk_entry_set_text(GTK_ENTRY(widgets->OSDefaultEntry),DEFAULT_MENU_ITEM_LABEL); } @@ -558,13 +588,6 @@ void on_parameter_changed(GtkWidget *self,main_window *widgets){ } 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 (){ } @@ -652,6 +675,7 @@ void 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); yon_interface_update(widgets); + bind_textdomain_codeset("ublinux-init-grub-functions","UTF-8"); } int main(int argc, char *argv[]){ diff --git a/source/ubl-settings-bootloader.h b/source/ubl-settings-bootloader.h index fa30cbc..f320087 100644 --- a/source/ubl-settings-bootloader.h +++ b/source/ubl-settings-bootloader.h @@ -277,4 +277,5 @@ 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); void on_tree_view_selection_changed(GtkWidget *self, main_window *widgets); -void on_melody_toggled(GtkCellRenderer *self, char *path, main_window *widgets); \ No newline at end of file +void on_melody_toggled(GtkCellRenderer *self, char *path, main_window *widgets); +char *yon_bootloader_get_os_name(char *parameter); \ No newline at end of file