Added install modules by group page packages existing checking; Fixed main components save

pull/373/head
parent 3d67fbb65b
commit d36324afca

@ -18,8 +18,12 @@ gboolean on_kernel_enabled_toggled(GtkWidget *self, GdkEventButton *, kernel_row
return 0; return 0;
} }
void on_kernel_info(GtkWidget *, char *, kernel_row *row){ void on_kernel_info(GtkWidget *, char *link, kernel_row *row){
if (!yon_char_is_empty(link)){
yon_package_info_window_create(link);
} else {
yon_package_info_window_create(row->package); yon_package_info_window_create(row->package);
}
} }
kernel_row *yon_kernel_row_new(){ kernel_row *yon_kernel_row_new(){
@ -42,6 +46,9 @@ kernel_row *yon_kernel_row_new(){
g_signal_connect(G_OBJECT(row->InstallCheck),"toggled",G_CALLBACK(on_kernel_install_enabled),row); g_signal_connect(G_OBJECT(row->InstallCheck),"toggled",G_CALLBACK(on_kernel_install_enabled),row);
g_signal_connect(G_OBJECT(row->EnableRadio),"button-release-event",G_CALLBACK(on_kernel_enabled_toggled),row); g_signal_connect(G_OBJECT(row->EnableRadio),"button-release-event",G_CALLBACK(on_kernel_enabled_toggled),row);
g_signal_connect(G_OBJECT(row->NameLabel),"activate-link",G_CALLBACK(on_kernel_info),row); g_signal_connect(G_OBJECT(row->NameLabel),"activate-link",G_CALLBACK(on_kernel_info),row);
g_signal_connect(G_OBJECT(row->ModulesLabel),"activate-link",G_CALLBACK(on_kernel_info),row);
g_signal_connect(G_OBJECT(row->NameLabel),"button-press-event",G_CALLBACK(on_kernel_addon_menu_block),row);
g_signal_connect(G_OBJECT(row->ModulesLabel),"button-press-event",G_CALLBACK(on_kernel_addon_menu_block),row);
row->row = gtk_list_box_row_new(); row->row = gtk_list_box_row_new();
gtk_container_add(GTK_CONTAINER(row->row),row->RowBox); gtk_container_add(GTK_CONTAINER(row->row),row->RowBox);
@ -121,10 +128,17 @@ void yon_kernel_row_setup(kernel_row *row, char *name, char *modules,char *packa
description_full = yon_char_parsed_to_string(description_wrapped,size,"\n"); description_full = yon_char_parsed_to_string(description_wrapped,size,"\n");
yon_char_parsed_free(description_wrapped,size); yon_char_parsed_free(description_wrapped,size);
} }
char *modules_parsed = yon_char_replace(modules," ","\n"); int modules_size=0;
config_str modules_parsed = yon_char_parse(modules,&modules_size," ");
char *label_markup = yon_char_unite("<a href=\"\">",name,"</a>",NULL); char *label_markup = yon_char_unite("<a href=\"\">",name,"</a>",NULL);
for (int i=0;i<modules_size;i++){
char *temp = yon_char_unite("<a href=\"",modules_parsed[i],"\">",modules_parsed[i],"</a>",NULL);
free(modules_parsed[i]);
modules_parsed[i] = temp;
}
char *modules_final = yon_char_parsed_to_string(modules_parsed,modules_size,"\n");
gtk_label_set_markup(GTK_LABEL(row->NameLabel),label_markup); gtk_label_set_markup(GTK_LABEL(row->NameLabel),label_markup);
gtk_label_set_label(GTK_LABEL(row->ModulesLabel),modules_parsed); gtk_label_set_markup(GTK_LABEL(row->ModulesLabel),modules_final);
gtk_label_set_label(GTK_LABEL(row->DescriptionLabel),description_full); gtk_label_set_label(GTK_LABEL(row->DescriptionLabel),description_full);
yon_kernel_row_setup_tags(row,tags); yon_kernel_row_setup_tags(row,tags);

@ -80,6 +80,31 @@ void on_software_info(GtkWidget*, main_window *widgets){
yon_char_parsed_free(parsed,size); 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){ void yon_packages_tab_init(main_window *widgets){
on_status_update(NULL,widgets); on_status_update(NULL,widgets);
if (!main_config.configure_mode){ 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++){ for (int i=0;i<main_config.modules_size;i++){
int parsed_size=0; int parsed_size=0;
config_str parsed = yon_char_parse(main_config.modules[i],&parsed_size,";"); 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_add_or_create_if_exists(final,&final_size,parsed[1]);
}
yon_char_parsed_free(parsed,parsed_size); yon_char_parsed_free(parsed,parsed_size);
} }
modules = yon_char_parsed_to_string(final,final_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,";"); config_str parsed = yon_char_parse(packages[i],&parsed_size,";");
GtkTreeIter *category_iter = yon_category_check(widgets->PackagesList,parsed[0]); GtkTreeIter *category_iter = yon_category_check(widgets->PackagesList,parsed[0]);
char *name_render = yon_char_replace(parsed[2],","," "); 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 (category_iter){
if (!yon_char_is_empty(parsed[1])){ if (!yon_char_is_empty(parsed[1])){
GtkTreeIter *subcategory_iter = yon_subcategory_check(widgets->PackagesList,category_iter,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; GtkTreeIter package_iter;
gtk_tree_store_append(widgets->PackagesList,&package_iter,subcategory_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); 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); free(full_string);
gtk_tree_iter_free(subcategory_iter); gtk_tree_iter_free(subcategory_iter);
} else { } 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_set(widgets->PackagesList,&subcatiter,1,parsed[1],2,_(parsed[1]),3,0,-1);
gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcatiter); gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcatiter);
char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL); 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); free(full_string);
} }
} else { } else {
GtkTreeIter package_iter; GtkTreeIter package_iter;
gtk_tree_store_append(widgets->PackagesList,&package_iter,category_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); 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); free(full_string);
} }
gtk_tree_iter_free(category_iter); 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_set(widgets->PackagesList,&subcategory_iter,1,parsed[1],2,_(parsed[1]),3,0,-1);
gtk_tree_store_append(widgets->PackagesList,&package_iter,&subcategory_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); 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); free(full_string);
} else { } else {
GtkTreeIter package_iter; 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_set(widgets->PackagesList,&catiter,1,parsed[0],2,_(parsed[0]),3,0,-1);
gtk_tree_store_append(widgets->PackagesList,&package_iter,&catiter); gtk_tree_store_append(widgets->PackagesList,&package_iter,&catiter);
char *full_string = yon_char_unite("<b>",name_render,"</b>\n",_(parsed[3]),NULL); 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); free(full_string);
} }
} }
} }
yon_packages_remove_empty_groups(widgets);
if (!yon_char_is_empty(modules)) free(modules); if (!yon_char_is_empty(modules)) free(modules);
gtk_tree_view_expand_all(GTK_TREE_VIEW(widgets->PackagesTree)); gtk_tree_view_expand_all(GTK_TREE_VIEW(widgets->PackagesTree));
} }

@ -268,7 +268,7 @@ int yon_page_save(main_window *widgets, enum YON_PAGES page){
case YON_PAGE_CONFIG_HUB: case YON_PAGE_CONFIG_HUB:
return yon_configuration_hub_save(widgets); return yon_configuration_hub_save(widgets);
case YON_PAGE_OS_COMPONENTS: case YON_PAGE_OS_COMPONENTS:
// return yon_os_components_save(widgets); return yon_os_components_save(widgets);
break; break;
case YON_PAGE_KERNEL: case YON_PAGE_KERNEL:
return yon_kernel_save(widgets); return yon_kernel_save(widgets);

@ -186,6 +186,11 @@ void on_region_entry_changed(GtkWidget *, main_window *widgets){
} }
} }
// void yon_region_load(CcTimezoneLocation *target, main_window *widgets){
// const char *timezone = cc_timezone_location_get_zone(target);
// }
void yon_region_init(main_window *widgets){ void yon_region_init(main_window *widgets){
if (!main_config.configure_mode){ if (!main_config.configure_mode){
yon_config_update_by_args(main_config.config_load_path, zone_parameter,NULL); yon_config_update_by_args(main_config.config_load_path, zone_parameter,NULL);
@ -232,6 +237,9 @@ void yon_region_init(main_window *widgets){
size_t zones_size=0; size_t zones_size=0;
config_str keys = (config_str)g_hash_table_get_keys_as_array(timezones_list,(guint*)&zones_size); config_str keys = (config_str)g_hash_table_get_keys_as_array(timezones_list,(guint*)&zones_size);
// TzDB *db = tz_load_db();
// GPtrArray *locations = tz_get_locations(db);
// g_ptr_array_foreach(locations,(GFunc)yon_region_load,widgets);
qsort(keys,zones_size,sizeof(char*),(__compar_fn_t)yon_char_parsed_compare); qsort(keys,zones_size,sizeof(char*),(__compar_fn_t)yon_char_parsed_compare);
for (size_t i=0;i<zones_size;i++){ for (size_t i=0;i<zones_size;i++){
gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->RegionCombo),keys[i],_(keys[i])); gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widgets->RegionCombo),keys[i],_(keys[i]));

@ -1641,3 +1641,4 @@ void yon_gtk_label_set_font(GtkLabel *label);
void on_kernel_info(GtkWidget *, char *link, kernel_row *row); void on_kernel_info(GtkWidget *, char *link, kernel_row *row);
gboolean on_os_components_info(GtkWidget *, GdkEventButton *, os_row *row); gboolean on_os_components_info(GtkWidget *, GdkEventButton *, os_row *row);
void on_software_info(GtkWidget*, main_window *widgets); void on_software_info(GtkWidget*, main_window *widgets);
void yon_packages_remove_empty_groups(main_window *widgets);
Loading…
Cancel
Save