diff --git a/source/ubinstall-gtk-packages.c b/source/ubinstall-gtk-packages.c index f9ca8c4..f63cabc 100644 --- a/source/ubinstall-gtk-packages.c +++ b/source/ubinstall-gtk-packages.c @@ -12,14 +12,14 @@ int yon_packages_tab_save(main_window *widgets){ char *package; gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&subiter,0,&status,1,&package,3,&selectable,-1); if (selectable&&status){ - yon_config_append_element(packages_parameter,package,","); + yon_config_append_elements(packages_parameter,package,","); }else if (selectable&&!status){ yon_config_remove_elements(packages_parameter,package,","); } else { for (int valid3 = gtk_tree_model_iter_children(GTK_TREE_MODEL(widgets->PackagesList),&packiter,&subiter);valid3;valid3 = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->PackagesList),&packiter)){ gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&packiter,0,&status,1,&package,3,&selectable,-1); if (status){ - yon_config_append_element(packages_parameter,package,","); + yon_config_append_elements(packages_parameter,package,","); } else { yon_config_remove_elements(packages_parameter,package,","); } @@ -92,14 +92,15 @@ void yon_packages_tab_init(main_window *widgets){ int parsed_size; config_str parsed = yon_char_parse(packages[i],&parsed_size,";"); GtkTreeIter *category_iter = yon_category_check(widgets->PackagesList,parsed[0]); + char *name_render = yon_char_replace(parsed[2],","," "); if (category_iter){ if (!yon_char_is_empty(parsed[1])){ GtkTreeIter *subcategory_iter = yon_subcategory_check(widgets->PackagesList,category_iter,parsed[1]); if (subcategory_iter){ GtkTreeIter package_iter; gtk_tree_store_append(widgets->PackagesList,&package_iter,subcategory_iter); - char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); + char *full_string = yon_char_unite("",name_render,"\n",_(parsed[3]),NULL); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_element(modules,parsed[2],","),5,parsed[2],-1); free(full_string); gtk_tree_iter_free(subcategory_iter); } else { @@ -108,15 +109,15 @@ void yon_packages_tab_init(main_window *widgets){ gtk_tree_store_append(widgets->PackagesList,&subcatiter,category_iter); gtk_tree_store_set(widgets->PackagesList,&subcatiter,1,parsed[1],2,_(parsed[3]),3,0,-1); gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcatiter); - char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); + char *full_string = yon_char_unite("",name_render,"\n",_(parsed[3]),NULL); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_element(modules,parsed[2],","),5,parsed[2],-1); free(full_string); } } else { GtkTreeIter package_iter; gtk_tree_store_append(widgets->PackagesList,&package_iter,category_iter); - char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); + char *full_string = yon_char_unite("",name_render,"\n",_(parsed[3]),NULL); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_element(modules,parsed[2],","),5,parsed[2],-1); free(full_string); } gtk_tree_iter_free(category_iter); @@ -130,8 +131,8 @@ void yon_packages_tab_init(main_window *widgets){ gtk_tree_store_append(widgets->PackagesList,&subcategory_iter,&catiter); gtk_tree_store_set(widgets->PackagesList,&subcategory_iter,1,parsed[1],2,_(parsed[1]),3,0,-1); gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcategory_iter); - char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,1,parsed[2],2,full_string,3,1,-1); + char *full_string = yon_char_unite("",name_render,"\n",_(parsed[3]),NULL); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_element(modules,parsed[2],","),-1); free(full_string); } else { GtkTreeIter package_iter; @@ -139,8 +140,8 @@ void yon_packages_tab_init(main_window *widgets){ gtk_tree_store_append(widgets->PackagesList,&catiter,NULL); gtk_tree_store_set(widgets->PackagesList,&catiter,1,parsed[0],2,_(parsed[0]),3,0,-1); gtk_tree_store_append(widgets->PackagesList,&package_iter,&catiter); - char *full_string = yon_char_unite("",parsed[2],"\n",_(parsed[3]),NULL); - gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,yon_char_check_element(modules,parsed[2],","),-1); + char *full_string = yon_char_unite("",name_render,"\n",_(parsed[3]),NULL); + gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_element(config_packages,parsed[2],",")||yon_char_check_element(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_element(modules,parsed[2],","),5,parsed[2],-1); free(full_string); } } @@ -178,14 +179,20 @@ void yon_on_packages_chosen(GtkWidget *, char *path, main_window *widgets){ GtkTreeIter iter; gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->PackagesList),&iter,path); int status; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&iter,0,&status,-1); - gtk_tree_store_set(widgets->PackagesList,&iter,0,!status,-1); + int sensitive; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&iter,0,&status,4,&sensitive,-1); + if (sensitive){ + gtk_tree_store_set(widgets->PackagesList,&iter,0,!status,-1); + } } void yon_on_packages_activated(GtkWidget *, GtkTreePath* path, GtkTreeViewColumn* , main_window *widgets){ GtkTreeIter iter; gtk_tree_model_get_iter(GTK_TREE_MODEL(widgets->PackagesList),&iter,path); + int sensitive; int status; - gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&iter,0,&status,-1); - gtk_tree_store_set(widgets->PackagesList,&iter,0,!status,-1); + gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&iter,0,&status,4,&sensitive,-1); + if (sensitive){ + gtk_tree_store_set(widgets->PackagesList,&iter,0,!status,-1); + } } \ No newline at end of file diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index afe4e1b..762849f 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -207,7 +207,7 @@ - + @@ -215,6 +215,8 @@ + +