@ -160,6 +160,46 @@ void on_config_custom_load(GtkWidget *,main_window *widgets){
yon_terminal_integrated_start ( terminal , command ) ;
}
char * yon_package_dependent_get ( char * target ) {
int size = 0 ;
config_str parsed = NULL ;
if ( strstr ( target , " , " ) ) {
int final_size = 0 ;
int targets_size = 0 ;
config_str targets = yon_char_parse ( target , & targets_size , " , " ) ;
for ( int i = 0 ; i < targets_size ; i + + ) {
int deps_size = 0 ;
config_str deps = yon_config_load ( get_dependent_command ( targets [ i ] ) , & deps_size ) ;
for ( int j = 0 ; j < deps_size ; j + + ) {
yon_char_remove_last_symbol ( deps [ j ] , ' \n ' ) ;
}
config_str tmp = yon_char_parsed_merge ( parsed , size , deps , deps_size , & final_size ) ;
if ( parsed ) yon_char_parsed_free ( parsed , size ) ;
parsed = tmp ;
size = final_size ;
}
} else {
parsed = yon_config_load ( get_dependent_command ( target ) , & size ) ;
}
int recurs_size = 0 ;
config_str recurs = NULL ;
for ( int i = 0 ; i < size ; i + + ) {
yon_char_remove_last_symbol ( parsed [ i ] , ' \n ' ) ;
if ( strcmp ( parsed [ i ] , target ) ) {
yon_char_parsed_add_or_create_if_exists ( recurs , & recurs_size , yon_package_dependent_get ( parsed [ i ] ) ) ;
} else {
yon_char_parsed_add_or_create_if_exists ( recurs , & recurs_size , parsed [ i ] ) ;
}
}
if ( recurs_size ) {
yon_char_parsed_free ( parsed , size ) ;
parsed = recurs ;
size = recurs_size ;
}
return yon_char_parsed_to_string ( parsed , size , " " ) ;
}
gboolean yon_tab_create_tags ( kernels_tab * tab ) {
GList * list = gtk_container_get_children ( GTK_CONTAINER ( tab - > install_tags_box ) ) ;
for ( guint i = 0 ; i < g_list_length ( list ) ; i + + ) {
@ -714,7 +754,7 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){
yon_dictionary_add_or_create_if_exists_with_data ( dict , " window " , window ) ;
if ( gtk_notebook_get_current_page ( GTK_NOTEBOOK ( widgets - > MainNotebook ) ) ) {
gtk_widget_hide ( window - > DependencesFrame ) ;
// gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START);
gtk_box_set_child_packing ( GTK_BOX ( gtk_widget_get_parent ( window - > DependencesFrame ) ) , gtk_widget_get_parent ( gtk_widget_get_parent ( window - > TopicLabel ) ) , 1 , 1 , 0 , GTK_PACK_START ) ;
} else {
int size ;
config_str additions = yon_resource_open_file ( kernels_addon_path , & size ) ;
@ -766,7 +806,7 @@ void on_package_install_clicked(GtkWidget *self,dictionary *dict){
if ( gtk_notebook_get_current_page ( GTK_NOTEBOOK ( widgets - > MainNotebook ) ) ) {
gtk_widget_hide ( window - > DependencesFrame ) ;
// gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START);
gtk_box_set_child_packing ( GTK_BOX ( gtk_widget_get_parent ( window - > DependencesFrame ) ) , gtk_widget_get_parent ( gtk_widget_get_parent ( window - > TopicLabel ) ) , 1 , 1 , 0 , GTK_PACK_START ) ;
} else {
int size ;
config_str additions = yon_resource_open_file ( kernels_addon_path , & size ) ;
@ -835,7 +875,7 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){
yon_gtk_window_setup ( GTK_WINDOW ( window - > Window ) , GTK_WINDOW ( widgets - > Window ) , self = = tab - > update_package_button ? UPDATE_MODULE_TITLE_LABEL : INSTALL_MODULE_TITLE_LABEL , icon_path , " additions_dialog " ) ;
action_text = ADDITION_MODULE_REMOVE_CONFIRMATION_LABEL ( tab - > name ) ;
gtk_widget_hide ( window - > DependencesFrame ) ;
// gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START);
gtk_box_set_child_packing ( GTK_BOX ( gtk_widget_get_parent ( window - > DependencesFrame ) ) , gtk_widget_get_parent ( gtk_widget_get_parent ( window - > TopicLabel ) ) , 1 , 1 , 0 , GTK_PACK_START ) ;
gtk_label_set_text ( GTK_LABEL ( window - > HeadLabel ) , REMOVE_ADDITION_MODULE_TITLE_LABEL ) ;
} else {
yon_gtk_window_setup ( GTK_WINDOW ( window - > Window ) , GTK_WINDOW ( widgets - > Window ) , self = = tab - > update_package_button ? UPDATE_MODULE_TITLE_LABEL : INSTALL_MODULE_TITLE_LABEL , icon_path , " dialog " ) ;
@ -848,18 +888,26 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){
}
int size ;
config_str additions = yon_resource_open_file ( kernels_addon_path , & size ) ;
GtkTreeIter iter ;
// GtkTreeIter iter;
for ( int i = 0 ; i < tab - > module_requirements_size ; i + + ) {
if ( ! system ( get_package_is_installed_command ( tab - > module_requirements [ i ] ) ) ) {
gtk_list_store_append ( window - > liststore1 , & iter ) ;
for ( int j = 1 ; j < size ; j + + ) {
int cur_size ;
config_str parsed = yon_char_parse ( additions [ j ] , & cur_size , " ; " ) ;
if ( ! strcmp ( parsed [ 1 ] , tab - > module_requirements [ i ] ) )
gtk_list_store_set ( window - > liststore1 , & iter , 1 , yon_char_unite ( parsed [ 1 ] , " , " , parsed [ 2 ] , NULL ) , 2 , parsed [ 3 ] , - 1 ) ;
if ( ! strcmp ( parsed [ 1 ] , tab - > module_requirements [ i ] ) ) {
char * target = yon_char_unite ( parsed [ 1 ] , " , " , parsed [ 2 ] , NULL ) ;
char * depends = yon_package_dependent_get ( target ) ;
if ( strcmp ( depends , target ) ) {
GtkTreeIter itar ;
gtk_list_store_append ( window - > liststore1 , & itar ) ;
gtk_list_store_set ( window - > liststore1 , & itar , 0 , 1 , 1 , depends , 2 , parsed [ 3 ] , - 1 ) ;
}
}
yon_char_parsed_free ( parsed , cur_size ) ;
}
}
}
yon_char_parsed_free ( additions , size ) ;
}
@ -909,7 +957,7 @@ void on_package_remove_clicked(GtkWidget *self,dictionary *dict){
action_text = ADDITION_PACKAGE_REMOVE_CONFIRMATION_LABEL ( tab - > name ) ;
gtk_label_set_text ( GTK_LABEL ( window - > HeadLabel ) , REMOVE_ADDITION_PACKAGE_TITLE_LABEL ) ;
gtk_widget_hide ( window - > DependencesFrame ) ;
// gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START);
gtk_box_set_child_packing ( GTK_BOX ( gtk_widget_get_parent ( window - > DependencesFrame ) ) , gtk_widget_get_parent ( gtk_widget_get_parent ( window - > TopicLabel ) ) , 1 , 1 , 0 , GTK_PACK_START ) ;
} else {
if ( installed_kernels > 1 ) {
action_text = KERNEL_PACKAGE_REMOVE_CONFIRMATION_LABEL ( tab - > name ) ;
@ -921,18 +969,23 @@ void on_package_remove_clicked(GtkWidget *self,dictionary *dict){
gtk_label_set_text ( GTK_LABEL ( window - > HeadLabel ) , REMOVE_PACKAGE_TITLE_LABEL ) ;
int size ;
config_str additions = yon_resource_open_file ( kernels_addon_path , & size ) ;
GtkTreeIter iter ;
for ( int i = 0 ; i < tab - > module_requirements_size ; i + + ) {
if ( ! system ( get_package_is_installed_command ( tab - > package_requirements [ i ] ) ) ) {
gtk_list_store_append ( window - > liststore1 , & iter ) ;
for ( int j = 1 ; j < size ; j + + ) {
int cur_size ;
config_str parsed = yon_char_parse ( additions [ j ] , & cur_size , " ; " ) ;
if ( ! strcmp ( parsed [ 1 ] , tab - > module_requirements [ i ] ) )
gtk_list_store_set ( window - > liststore1 , & iter , 2 , parsed [ 3 ] , - 1 ) ;
if ( ! strcmp ( parsed [ 1 ] , tab - > module_requirements [ i ] ) ) {
char * target = yon_char_unite ( parsed [ 1 ] , " , " , parsed [ 2 ] , NULL ) ;
char * depends = yon_package_dependent_get ( target ) ;
if ( strcmp ( depends , target ) ) {
GtkTreeIter itar ;
gtk_list_store_append ( window - > liststore1 , & itar ) ;
gtk_list_store_set ( window - > liststore1 , & itar , 0 , 1 , 1 , depends , 2 , parsed [ 3 ] , - 1 ) ;
}
}
yon_char_parsed_free ( parsed , cur_size ) ;
}
gtk_list_store_set ( window - > liststore1 , & iter , 0 , 1 , 1 , tab - > module_requirements [ i ] , - 1 ) ;
}
}
yon_char_parsed_free ( additions , size ) ;