|
|
|
|
@ -80,6 +80,31 @@ void on_software_info(GtkWidget*, main_window *widgets){
|
|
|
|
|
yon_char_parsed_free(parsed,size);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void yon_packages_remove_empty_groups(main_window *widgets){
|
|
|
|
|
GtkTreeModel *model = GTK_TREE_MODEL(widgets->PackagesList);
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
for_iter(model,&iter){
|
|
|
|
|
if (gtk_tree_model_iter_has_child(model,&iter)){
|
|
|
|
|
GtkTreeIter subiter;
|
|
|
|
|
for (int valid2 = gtk_tree_model_iter_children(model,&subiter,&iter);valid2;valid2 = gtk_tree_model_iter_next(model,&subiter)){
|
|
|
|
|
if (!gtk_tree_model_iter_has_child(model,&subiter)){
|
|
|
|
|
gtk_tree_store_remove(widgets->PackagesList,&subiter);
|
|
|
|
|
if (!gtk_tree_model_iter_children(model,&subiter,&iter)){
|
|
|
|
|
valid2=0;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
gtk_tree_store_remove(widgets->PackagesList,&iter);
|
|
|
|
|
if (!gtk_tree_model_get_iter_first(model,&iter)){
|
|
|
|
|
valid=0;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void yon_packages_tab_init(main_window *widgets){
|
|
|
|
|
on_status_update(NULL,widgets);
|
|
|
|
|
if (!main_config.configure_mode){
|
|
|
|
|
@ -99,7 +124,9 @@ void yon_packages_tab_init(main_window *widgets){
|
|
|
|
|
for (int i=0;i<main_config.modules_size;i++){
|
|
|
|
|
int parsed_size=0;
|
|
|
|
|
config_str parsed = yon_char_parse(main_config.modules[i],&parsed_size,";");
|
|
|
|
|
if (yon_packages_check_exist(parsed[1])){
|
|
|
|
|
yon_char_parsed_add_or_create_if_exists(final,&final_size,parsed[1]);
|
|
|
|
|
}
|
|
|
|
|
yon_char_parsed_free(parsed,parsed_size);
|
|
|
|
|
}
|
|
|
|
|
modules = yon_char_parsed_to_string(final,final_size,",");
|
|
|
|
|
@ -125,6 +152,20 @@ void yon_packages_tab_init(main_window *widgets){
|
|
|
|
|
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],","," ");
|
|
|
|
|
int final_size = 0;
|
|
|
|
|
config_str final = NULL;
|
|
|
|
|
int modules_parsed_size = 0;
|
|
|
|
|
config_str modules_parsed = yon_char_parse(parsed[2],&modules_parsed_size," ");
|
|
|
|
|
int empty=0;
|
|
|
|
|
for (int j=0;j<modules_parsed_size;j++){
|
|
|
|
|
if (!yon_packages_check_exist(modules_parsed[j])){
|
|
|
|
|
empty = 1;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (empty) continue;
|
|
|
|
|
yon_char_parsed_free(modules_parsed,modules_parsed_size);
|
|
|
|
|
char *modules_string = yon_char_parsed_to_string(final,final_size,"\t");
|
|
|
|
|
if (category_iter){
|
|
|
|
|
if (!yon_char_is_empty(parsed[1])){
|
|
|
|
|
GtkTreeIter *subcategory_iter = yon_subcategory_check(widgets->PackagesList,category_iter,parsed[1]);
|
|
|
|
|
@ -132,7 +173,7 @@ void yon_packages_tab_init(main_window *widgets){
|
|
|
|
|
GtkTreeIter package_iter;
|
|
|
|
|
gtk_tree_store_append(widgets->PackagesList,&package_iter,subcategory_iter);
|
|
|
|
|
char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL);
|
|
|
|
|
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,parsed[2],",")||yon_char_check_elements(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_elements(modules,parsed[2],","),5,parsed[2],-1);
|
|
|
|
|
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,modules_string,",")||yon_char_check_elements(modules,modules_string,","),1,modules_string,2,full_string,3,1,4,!yon_char_check_elements(modules,modules_string,","),5,modules_string,-1);
|
|
|
|
|
free(full_string);
|
|
|
|
|
gtk_tree_iter_free(subcategory_iter);
|
|
|
|
|
} else {
|
|
|
|
|
@ -142,14 +183,14 @@ void yon_packages_tab_init(main_window *widgets){
|
|
|
|
|
gtk_tree_store_set(widgets->PackagesList,&subcatiter,1,parsed[1],2,_(parsed[1]),3,0,-1);
|
|
|
|
|
gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcatiter);
|
|
|
|
|
char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL);
|
|
|
|
|
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,parsed[2],",")||yon_char_check_elements(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_elements(modules,parsed[2],","),5,parsed[2],-1);
|
|
|
|
|
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,modules_string,",")||yon_char_check_elements(modules,modules_string,","),1,modules_string,2,full_string,3,1,4,!yon_char_check_elements(modules,modules_string,","),5,modules_string,-1);
|
|
|
|
|
free(full_string);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
GtkTreeIter package_iter;
|
|
|
|
|
gtk_tree_store_append(widgets->PackagesList,&package_iter,category_iter);
|
|
|
|
|
char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL);
|
|
|
|
|
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,parsed[2],",")||yon_char_check_elements(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_elements(modules,parsed[2],","),5,parsed[2],-1);
|
|
|
|
|
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,modules_string,",")||yon_char_check_elements(modules,modules_string,","),1,modules_string,2,full_string,3,1,4,!yon_char_check_elements(modules,modules_string,","),5,modules_string,-1);
|
|
|
|
|
free(full_string);
|
|
|
|
|
}
|
|
|
|
|
gtk_tree_iter_free(category_iter);
|
|
|
|
|
@ -164,7 +205,7 @@ void yon_packages_tab_init(main_window *widgets){
|
|
|
|
|
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("<b>",name_render,"</b>\n",_(parsed[3]),NULL);
|
|
|
|
|
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,parsed[2],",")||yon_char_check_elements(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_elements(modules,parsed[2],","),5,parsed[2],-1);
|
|
|
|
|
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,modules_string,",")||yon_char_check_elements(modules,modules_string,","),1,modules_string,2,full_string,3,1,4,!yon_char_check_elements(modules,modules_string,","),5,modules_string,-1);
|
|
|
|
|
free(full_string);
|
|
|
|
|
} else {
|
|
|
|
|
GtkTreeIter package_iter;
|
|
|
|
|
@ -173,11 +214,12 @@ void yon_packages_tab_init(main_window *widgets){
|
|
|
|
|
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("<b>",name_render,"</b>\n",_(parsed[3]),NULL);
|
|
|
|
|
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,parsed[2],",")||yon_char_check_elements(modules,parsed[2],","),1,parsed[2],2,full_string,3,1,4,!yon_char_check_elements(modules,parsed[2],","),5,parsed[2],-1);
|
|
|
|
|
gtk_tree_store_set(widgets->PackagesList,&package_iter,0,!!yon_char_check_elements(config_packages,modules_string,",")||yon_char_check_elements(modules,modules_string,","),1,modules_string,2,full_string,3,1,4,!yon_char_check_elements(modules,modules_string,","),5,modules_string,-1);
|
|
|
|
|
free(full_string);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
yon_packages_remove_empty_groups(widgets);
|
|
|
|
|
if (!yon_char_is_empty(modules)) free(modules);
|
|
|
|
|
gtk_tree_view_expand_all(GTK_TREE_VIEW(widgets->PackagesTree));
|
|
|
|
|
}
|
|
|
|
|
|