Grub menu fixes

pull/110/head
parent def78a02a1
commit a81fdce2a8

@ -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<size;i++){
yon_char_remove_last_symbol(options[i],'\n');
int parsed_size;
config_str parsed = yon_char_parse(options[i],&parsed_size,";");
config_str parsed = yon_char_parse(_(options[i]),&parsed_size,";");
int id_size;
config_str id_parsed = yon_char_parse(parsed[0],&id_size,">");
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<size;i++){
yon_char_remove_last_symbol(options[i],'\n');
int parsed_size;
config_str parsed = yon_char_parse(options[i],&parsed_size,";");
{
char *temp = _(parsed[1]);
parsed[1] = yon_char_new(temp);
}
int have_children=0;
char *children_id;
if ((children_id=strstr(parsed[0],">"))){
@ -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));

@ -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<size;i++){
yon_char_remove_last_symbol(menu_entries[i],'\n');
int parsed_size;
config_str parsed = yon_char_parse(menu_entries[i],&parsed_size,";");
if (!strcmp(parsed[0],parameter)){
char *name = strstr(_(parsed[1]),">");
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[]){

@ -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);
void on_melody_toggled(GtkCellRenderer *self, char *path, main_window *widgets);
char *yon_bootloader_get_os_name(char *parameter);
Loading…
Cancel
Save