@ -166,14 +166,10 @@ gboolean yon_tab_create_tags(kernels_tab *tab){
if ( ! getuid ( ) ) {
if ( boot_run & & ! strcmp ( boot_run [ 0 ] , tab - > package ) ) {
yon_tag_add ( GTK_BOX ( tab - > install_tags_box ) , RUNNING_LABEL , " tag_green " , NULL ) ;
gtk_widget_hide ( tab - > update_module_button ) ;
gtk_widget_hide ( tab - > update_package_button ) ;
gtk_widget_hide ( tab - > launch_button ) ;
} else if ( ! yon_char_is_empty ( launched ) & & ! strcmp ( launched , tab - > package ) ) {
yon_tag_add ( GTK_BOX ( tab - > install_tags_box ) , BOOT_RUN_LABEL , " tag_orange " , NULL ) ;
gtk_widget_hide ( tab - > launch_button ) ;
gtk_widget_hide ( tab - > update_module_button ) ;
gtk_widget_hide ( tab - > update_package_button ) ;
}
}
}
@ -232,53 +228,70 @@ void *yon_tab_set_installed(kernels_tab *tab){
}
void * yon_interface_update ( main_window * widgets ) {
yon_ubl_status_box_render ( LOADING_LABEL , BACKGROUND_IMAGE_INFO_TYPE ) ;
if ( main_config . kernel_tabs ) {
GList * list = gtk_container_get_children ( GTK_CONTAINER ( widgets - > KernelsPackageBox ) ) ;
for ( guint i = 0 ; i < g_list_length ( list ) ; i + + ) {
gtk_widget_destroy ( g_list_nth_data ( list , i ) ) ;
int lock = 0 ;
g_mutex_lock ( & main_config . update_mutex ) ;
lock = main_config . update_active ;
g_mutex_unlock ( & main_config . update_mutex ) ;
if ( ! lock ) {
g_mutex_lock ( & main_config . update_mutex ) ;
main_config . update_active = 1 ;
g_mutex_unlock ( & main_config . update_mutex ) ;
yon_ubl_status_box_render ( LOADING_LABEL , BACKGROUND_IMAGE_INFO_TYPE ) ;
{
GList * list = gtk_container_get_children ( GTK_CONTAINER ( widgets - > KernelsPackageBox ) ) ;
if ( g_list_length ( list ) > 0 ) {
for ( guint i = 0 ; i < g_list_length ( list ) ; i + + ) {
gtk_widget_destroy ( g_list_nth_data ( list , i ) ) ;
}
g_list_free ( list ) ;
}
}
g_list_free ( list ) ;
}
if ( main_config . addition_tabs ) {
GList * list = gtk_container_get_children ( GTK_CONTAINER ( widgets - > AdditionsPackageBox ) ) ;
for ( guint i = 0 ; i < g_list_length ( list ) ; i + + ) {
gtk_widget_destroy ( g_list_nth_data ( list , i ) ) ;
{
GList * list = gtk_container_get_children ( GTK_CONTAINER ( widgets - > AdditionsPackageBox ) ) ;
if ( g_list_length ( list ) > 0 ) {
for ( guint i = 0 ; i < g_list_length ( list ) ; i + + ) {
gtk_widget_destroy ( g_list_nth_data ( list , i ) ) ;
}
g_list_free ( list ) ;
}
}
g_list_free ( list ) ;
}
int kernels_size ;
config_str kernels = yon_resource_open_file ( kernels_path , & kernels_size ) ;
int kernels_size ;
config_str kernels = yon_resource_open_file ( kernels_path , & kernels_size ) ;
for ( int i = 1 ; i < kernels_size ; i + + ) {
kernels_tab * tab = yon_tab_row_new ( GTK_LIST_BOX ( widgets - > KernelsPackageBox ) , kernels [ i ] , widgets ) ;
g_thread_new ( " tags_install_tread " , ( GThreadFunc ) yon_tab_set_installed , tab ) ;
{
GList * list = gtk_container_get_children ( GTK_CONTAINER ( tab - > run_tags_box ) ) ;
for ( guint i = 0 ; i < g_list_length ( list ) ; i + + ) {
gtk_widget_destroy ( g_list_nth_data ( list , i ) ) ;
for ( int i = 1 ; i < kernels_size ; i + + ) {
kernels_tab * tab = yon_tab_row_new ( GTK_LIST_BOX ( widgets - > KernelsPackageBox ) , kernels [ i ] , widgets ) ;
g_thread_new ( " tags_install_tread " , ( GThreadFunc ) yon_tab_set_installed , tab ) ;
{
GList * list = gtk_container_get_children ( GTK_CONTAINER ( tab - > run_tags_box ) ) ;
for ( guint i = 0 ; i < g_list_length ( list ) ; i + + ) {
gtk_widget_destroy ( g_list_nth_data ( list , i ) ) ;
}
g_list_free ( list ) ; }
gtk_widget_set_can_focus ( gtk_widget_get_parent ( tab - > main_box ) , 0 ) ;
}
g_list_free ( list ) ; }
gtk_widget_set_can_focus ( gtk_widget_get_parent ( tab - > main_box ) , 0 ) ;
}
yon_char_parsed_free ( kernels , kernels_size ) ;
kernels = yon_resource_open_file ( kernels_addon_path , & kernels_size ) ;
for ( int i = 1 ; i < kernels_size ; i + + ) {
additions_kernels_tab * tab = yon_additions_tab_row_new ( GTK_LIST_BOX ( widgets - > AdditionsPackageBox ) , kernels [ i ] , widgets ) ;
g_thread_new ( " tags_install_tread " , ( GThreadFunc ) yon_tab_set_installed , tab ) ;
gtk_widget_set_can_focus ( gtk_widget_get_parent ( tab - > main_box ) , 0 ) ;
}
textdomain ( template_ui_LocaleName ) ;
switch ( main_config . load_mode ) {
case 0 : yon_ubl_status_box_render ( GLOBAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
break ;
case 1 : yon_ubl_status_box_render ( LOCAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
break ;
case 3 : yon_ubl_status_box_render ( LOCAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
break ;
yon_char_parsed_free ( kernels , kernels_size ) ;
kernels = yon_resource_open_file ( kernels_addon_path , & kernels_size ) ;
for ( int i = 1 ; i < kernels_size ; i + + ) {
additions_kernels_tab * tab = yon_additions_tab_row_new ( GTK_LIST_BOX ( widgets - > AdditionsPackageBox ) , kernels [ i ] , widgets ) ;
g_thread_new ( " tags_install_tread " , ( GThreadFunc ) yon_tab_set_installed , tab ) ;
gtk_widget_set_can_focus ( gtk_widget_get_parent ( tab - > main_box ) , 0 ) ;
}
textdomain ( template_ui_LocaleName ) ;
switch ( main_config . load_mode ) {
case 0 : yon_ubl_status_box_render ( GLOBAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
break ;
case 1 : yon_ubl_status_box_render ( LOCAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
break ;
case 3 : yon_ubl_status_box_render ( LOCAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
break ;
}
textdomain ( LocaleName ) ;
g_mutex_lock ( & main_config . update_mutex ) ;
main_config . update_active = 0 ;
g_mutex_unlock ( & main_config . update_mutex ) ;
}
textdomain ( LocaleName ) ;
return NULL ;
}
@ -477,7 +490,7 @@ dialog_window *yon_dialog_window_new(){
void on_module_install_clicked ( GtkWidget * self , dictionary * dict ) {
main_window * widgets = yon_dictionary_get_data ( dict - > first , main_window * ) ;
kernels_tab * tab = yon_dictionary_get_data ( dict - > first - > next , kernels_tab * ) ;
char * action_text = MODULE_INSTALL_CONFIRMATION_LABEL( tab - > name ) ;
char * action_text = KERNEL_ MODULE_INSTALL_CONFIRMATION_LABEL( tab - > name ) ;
if ( ! gtk_notebook_get_current_page ( GTK_NOTEBOOK ( widgets - > MainNotebook ) ) ) {
dialog_window * window = yon_dialog_window_new ( ) ;
yon_dictionary_add_or_create_if_exists_with_data ( dict , " window " , window ) ;
@ -504,7 +517,7 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){
} else {
dialog_confirmation_data * data = malloc ( sizeof ( dialog_confirmation_data ) ) ;
data - > action_text = MODULE_INSTALL_CONFIRMATION_LABEL( tab - > name ) ;
data - > action_text = ADDITION_ MODULE_INSTALL_CONFIRMATION_LABEL( tab - > name ) ;
data - > function = NULL ;
data - > data = NULL ;
if ( yon_confirmation_dialog_call ( self , data ) = = GTK_RESPONSE_ACCEPT ) {
@ -519,7 +532,7 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){
void on_package_install_clicked ( GtkWidget * self , dictionary * dict ) {
main_window * widgets = yon_dictionary_get_data ( dict - > first , main_window * ) ;
kernels_tab * tab = yon_dictionary_get_data ( dict - > first - > next , kernels_tab * ) ;
char * action_text = MODUL E_INSTALL_CONFIRMATION_LABEL( tab - > name ) ;
char * action_text = KERNEL_PACKAG E_INSTALL_CONFIRMATION_LABEL( tab - > name ) ;
if ( ! gtk_notebook_get_current_page ( GTK_NOTEBOOK ( widgets - > MainNotebook ) ) ) {
dialog_window * window = yon_dialog_window_new ( ) ;
g_signal_connect ( G_OBJECT ( window - > AcceptButton ) , " clicked " , G_CALLBACK ( on_package_install_accept ) , dict ) ;
@ -546,7 +559,7 @@ void on_package_install_clicked(GtkWidget *self,dictionary *dict){
} else {
dialog_confirmation_data * data = malloc ( sizeof ( dialog_confirmation_data ) ) ;
data - > action_text = MODUL E_INSTALL_CONFIRMATION_LABEL( tab - > name ) ;
data - > action_text = ADDITION_PACKAG E_INSTALL_CONFIRMATION_LABEL( tab - > name ) ;
data - > function = NULL ;
data - > data = NULL ;
if ( yon_confirmation_dialog_call ( self , data ) = = GTK_RESPONSE_ACCEPT ) {
@ -570,7 +583,7 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){
main_window * widgets = yon_dictionary_get_data ( dict - > first , main_window * ) ;
kernels_tab * tab = yon_dictionary_get_data ( dict - > first - > next , kernels_tab * ) ;
dialog_confirmation_data * data = malloc ( sizeof ( dialog_confirmation_data ) ) ;
data - > action_text = MODULE_REMOVE_CONFIRMATION_LABEL( tab - > name ) ;
data - > action_text = KERNEL_ MODULE_REMOVE_CONFIRMATION_LABEL( tab - > name ) ;
data - > function = NULL ;
data - > data = NULL ;
if ( yon_confirmation_dialog_call ( self , data ) = = GTK_RESPONSE_ACCEPT ) {
@ -589,7 +602,7 @@ void on_package_remove_clicked(GtkWidget *self,dictionary *dict){
main_window * widgets = yon_dictionary_get_data ( dict - > first , main_window * ) ;
kernels_tab * tab = yon_dictionary_get_data ( dict - > first - > next , kernels_tab * ) ;
dialog_confirmation_data * data = malloc ( sizeof ( dialog_confirmation_data ) ) ;
data - > action_text = PACKAGE_REMOVE_CONFIRMATION_LABEL( tab - > name ) ;
data - > action_text = KERNEL_ PACKAGE_REMOVE_CONFIRMATION_LABEL( tab - > name ) ;
data - > function = NULL ;
data - > data = NULL ;
int resp = yon_confirmation_dialog_call ( self , data ) ;
@ -657,6 +670,9 @@ kernels_tab *yon_tab_row_new(GtkListBox *target, char *target_string, main_windo
g_signal_connect ( G_OBJECT ( tab - > remove_package_button ) , " clicked " , G_CALLBACK ( on_package_remove_clicked ) , dict ) ;
g_signal_connect ( G_OBJECT ( tab - > changelog_button ) , " clicked " , G_CALLBACK ( on_changelog_clicked ) , tab ) ;
g_signal_connect ( G_OBJECT ( tab - > launch_button ) , " clicked " , G_CALLBACK ( on_launch_cliked ) , dict ) ;
g_signal_connect ( G_OBJECT ( tab - > module_label ) , " activate-link " , G_CALLBACK ( on_info_clicked ) , tab ) ;
g_signal_connect ( G_OBJECT ( tab - > package_label ) , " activate-link " , G_CALLBACK ( on_info_clicked ) , tab ) ;
if ( getuid ( ) ) {
gtk_widget_set_sensitive ( tab - > launch_button , 0 ) ;
@ -671,8 +687,8 @@ kernels_tab *yon_tab_row_new(GtkListBox *target, char *target_string, main_windo
tab - > module = yon_char_new ( parsed [ 1 ] ) ;
tab - > package = yon_char_new ( parsed [ 2 ] ) ;
char * name = yon_char_unite ( " <b> " , tab - > name , " </b> " , NULL ) ;
char * module = yon_char_unite ( " <i> " , MODULE_LABEL , " " , tab - > module , " </i>" , NULL ) ;
char * package = yon_char_unite ( " <i> " , PACKAGE_LABEL , " " , tab - > package , " </i>" , NULL ) ;
char * module = yon_char_unite ( " <i> " , MODULE_LABEL , " <a href=\" \" > " , tab - > module , " </a> </i>" , NULL ) ;
char * package = yon_char_unite ( " <i> " , PACKAGE_LABEL , " <a href=\" \" > " , tab - > package , " </a> </i>" , NULL ) ;
yon_dictionary_add_or_create_if_exists_with_data ( main_config . kernel_tabs , tab - > package , tab ) ;
@ -759,14 +775,17 @@ additions_kernels_tab *yon_additions_tab_row_new(GtkListBox *target, char *targe
g_signal_connect ( G_OBJECT ( tab - > install_package_button ) , " clicked " , G_CALLBACK ( on_package_install_clicked ) , dict ) ;
g_signal_connect ( G_OBJECT ( tab - > remove_module_button ) , " clicked " , G_CALLBACK ( on_module_remove_clicked ) , dict ) ;
g_signal_connect ( G_OBJECT ( tab - > remove_package_button ) , " clicked " , G_CALLBACK ( on_package_remove_clicked ) , dict ) ;
g_signal_connect ( G_OBJECT ( tab - > module_label ) , " activate-link " , G_CALLBACK ( on_info_clicked ) , tab ) ;
g_signal_connect ( G_OBJECT ( tab - > package_label ) , " activate-link " , G_CALLBACK ( on_info_clicked ) , tab ) ;
gtk_list_box_insert ( target , tab - > main_box , - 1 ) ;
tab - > name = yon_char_new ( parsed [ 0 ] ) ;
tab - > module = yon_char_new ( parsed [ 1 ] ) ;
tab - > package = yon_char_new ( parsed [ 2 ] ) ;
char * name = yon_char_unite ( " <b> " , tab - > name , " </b> " , NULL ) ;
char * module = yon_char_unite ( " <i> " , MODULE_LABEL , " " , tab - > module , " </i>" , NULL ) ;
char * package = yon_char_unite ( " <i> " , PACKAGE_LABEL , " " , tab - > package , " </i>" , NULL ) ;
char * module = yon_char_unite ( " <i> " , MODULE_LABEL , " <a href=\" \" > " , tab - > module , " </a> </i>" , NULL ) ;
char * package = yon_char_unite ( " <i> " , PACKAGE_LABEL , " <a href=\" \" > " , tab - > package , " </a> </i>" , NULL ) ;
yon_dictionary_add_or_create_if_exists_with_data ( main_config . addition_tabs , tab - > package , tab ) ;
@ -804,7 +823,9 @@ void config_init(){
main_config . load_mode = 1 ;
main_config . save_config = 1 ;
main_config . kernel_tabs = NULL ;
main_config . addition_tabs = NULL ;
main_config . progress_active = 0 ;
main_config . update_active = 0 ;
}
void on_update_clicked ( GtkWidget * , main_window * widgets ) {
@ -816,46 +837,31 @@ void on_update_clicked(GtkWidget *, main_window *widgets){
yon_interface_update ( widgets ) ;
}
void on_selection_changed ( GtkWidget * , GtkListBoxRow * row , main_window * widgets ) {
if ( row ) {
gtk_widget_set_sensitive ( widgets - > InfoButton , 1 ) ;
void on_info_clicked ( GtkWidget * self , char * , kernels_tab * tab ) {
info_window * window = yon_info_window_new ( ) ;
yon_gtk_window_setup ( GTK_WINDOW ( window - > window ) , NULL , INFO_TITLE_LABEL , icon_path , " info_window " ) ;
char * package = NULL ;
if ( self = = tab - > module_label ) {
package = yon_char_new ( tab - > module ) ;
} else {
gtk_widget_set_sensitive ( widgets - > InfoButton , 0 ) ;
package = yon_char_new ( tab - > package ) ;
}
}
int size ;
void on_info_clicked ( GtkWidget * , main_window * widgets ) {
info_window * window = yon_info_window_new ( ) ;
yon_gtk_window_setup ( GTK_WINDOW ( window - > window ) , GTK_WINDOW ( widgets - > Window ) , INFO_TITLE_LABEL , icon_path , " info_window " ) ;
GtkWidget * current_tree = NULL ;
if ( gtk_notebook_get_current_page ( GTK_NOTEBOOK ( widgets - > MainNotebook ) ) = = 0 ) {
current_tree = widgets - > KernelsPackageBox ;
} else {
current_tree = widgets - > AdditionsPackageBox ;
if ( strstr ( package , " , " ) ) {
char * temp = yon_char_replace ( package , " , " , " " ) ;
free ( package ) ;
package = temp ;
}
GtkListBoxRow * target = gtk_list_box_get_selected_row ( GTK_LIST_BOX ( current_tree ) ) ;
if ( target ) {
GList * list = gtk_container_get_children ( GTK_CONTAINER ( target ) ) ;
GList * list2 = gtk_container_get_children ( GTK_CONTAINER ( g_list_nth_data ( list , 0 ) ) ) ;
GList * list3 = gtk_container_get_children ( GTK_CONTAINER ( g_list_nth_data ( list2 , 0 ) ) ) ;
GList * list4 = gtk_container_get_children ( GTK_CONTAINER ( g_list_nth_data ( list3 , 2 ) ) ) ;
char * target_str = yon_char_new ( ( char * ) gtk_label_get_text ( GTK_LABEL ( g_list_nth_data ( list4 , 1 ) ) ) ) ;
int size ;
char * package = NULL ;
if ( ( package = strstr ( target_str , " : " ) ) ) {
package + = 2 ;
if ( strstr ( package , " , " ) ) {
package = yon_char_replace ( package , " , " , " " ) ;
}
}
config_str info = yon_config_load ( get_package_info_command ( package ) , & size ) ;
if ( size ! = - 1 ) {
char * final_text = yon_char_parsed_to_string ( info , size , " " ) ;
gtk_label_set_text ( GTK_LABEL ( window - > InfoLabel ) , final_text ) ;
free ( final_text ) ;
} else {
gtk_label_set_text ( GTK_LABEL ( window - > InfoLabel ) , PACKAGE_NOT_FOUND_LABEL ) ;
}
config_str info = yon_config_load ( get_package_info_command ( package ) , & size ) ;
if ( size ! = - 1 ) {
char * final_text = yon_char_parsed_to_string ( info , size , " " ) ;
gtk_label_set_text ( GTK_LABEL ( window - > InfoLabel ) , final_text ) ;
free ( final_text ) ;
} else {
gtk_label_set_text ( GTK_LABEL ( window - > InfoLabel ) , PACKAGE_NOT_FOUND_LABEL ) ;
}
gtk_widget_show ( window - > window ) ;
}
@ -972,8 +978,6 @@ void yon_main_window_complete(main_window *widgets){
{
widgets - > MainNotebook = yon_gtk_builder_get_widget ( builder , " MainNotebook " ) ;
widgets - > UpdateButton = yon_gtk_builder_get_widget ( builder , " UpdateButton " ) ;
widgets - > InfoButton = yon_gtk_builder_get_widget ( builder , " InfoButton " ) ;
widgets - > LogButton = yon_gtk_builder_get_widget ( builder , " LogButton " ) ;
widgets - > BuildingButton = yon_gtk_builder_get_widget ( builder , " BuildingButton " ) ;
widgets - > KernelsUpperTree = yon_gtk_builder_get_widget ( builder , " KernelsUpperTree " ) ;
widgets - > KernelsTree = yon_gtk_builder_get_widget ( builder , " KernelsTree " ) ;
@ -999,11 +1003,8 @@ void yon_main_window_complete(main_window *widgets){
widgets - > ButtonsSizeGroup = GTK_SIZE_GROUP ( gtk_builder_get_object ( builder , " ButtonsSizeGroup " ) ) ;
g_signal_connect ( G_OBJECT ( widgets - > UpdateButton ) , " clicked " , G_CALLBACK ( on_update_clicked ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > InfoButton ) , " clicked " , G_CALLBACK ( on_info_clicked ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > BuildingButton ) , " clicked " , G_CALLBACK ( on_building_clicked ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > MoreButton ) , " clicked " , G_CALLBACK ( on_terminal_revealer_open ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > KernelsPackageBox ) , " row-selected " , G_CALLBACK ( on_selection_changed ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > AdditionsPackageBox ) , " row-selected " , G_CALLBACK ( on_selection_changed ) , widgets ) ;
// g_signal_connect(G_OBJECT(widgets->InstallTerminal),"child-exited",G_CALLBACK(on_command_execute_success),widgets);
g_signal_connect ( G_OBJECT ( widgets - > SaveMenuItem ) , " activate " , G_CALLBACK ( on_config_save ) , widgets ) ;