@ -66,28 +66,32 @@ void on_config_save(GtkWidget *, main_window *widgets){
main_config . save_config = 2 ;
template_saving_window * window = yon_save_proceed ( NULL , YON_CONFIG_BOTH , yon_config_get_custom_command ( " global " ) , NULL ) ;
if ( window ) { } ;
yon_interface_update ( widgets ) ;
on_update_clicked ( NULL , widgets ) ;
}
void on_config_global_save ( GtkWidget * , main_window * widgets ) {
main_config . save_config = 0 ;
template_saving_window * window = yon_save_proceed ( " global " , YON_CONFIG_GLOBAL , yon_config_get_custom_command ( " global " ) , NULL ) ;
if ( window ) { } ;
yon_interface_update ( widgets ) ;
on_update_clicked ( NULL , widgets ) ;
}
void on_config_local_save ( GtkWidget * , main_window * widgets ) {
main_config . save_config = 1 ;
template_saving_window * window = yon_save_proceed ( " system " , YON_CONFIG_LOCAL , yon_config_get_custom_command ( " system " ) , NULL ) ;
if ( window ) { } ;
yon_interface_update ( widgets ) ;
on_update_clicked ( NULL , widgets ) ;
}
void on_config_custom_save ( GtkWidget * , main_window * widgets ) {
main_config . save_config = 1 ;
template_saving_window * window = yon_save_proceed ( NULL , YON_CONFIG_CUSTOM , yon_config_get_custom_command ( " system " ) , NULL ) ;
if ( window ) { } ;
yon_interface_update ( widgets ) ;
on_update_clicked ( NULL , widgets ) ;
}
@ -97,7 +101,8 @@ void on_config_local_load(GtkWidget *, main_window *widgets){
yon_ubl_status_box_render ( LOCAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
textdomain ( LocaleName ) ;
main_config . load_mode = 1 ;
yon_interface_update ( widgets ) ;
on_update_clicked ( NULL , widgets ) ;
}
void on_config_global_load ( GtkWidget * , main_window * widgets ) {
@ -106,7 +111,8 @@ void on_config_global_load(GtkWidget *, main_window *widgets){
yon_ubl_status_box_render ( GLOBAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
textdomain ( LocaleName ) ;
main_config . load_mode = 0 ;
yon_interface_update ( widgets ) ;
on_update_clicked ( NULL , widgets ) ;
}
void on_config_custom_load ( GtkWidget * , main_window * widgets ) {
@ -115,7 +121,8 @@ void on_config_custom_load(GtkWidget *,main_window *widgets){
yon_ubl_status_box_render ( GLOBAL_LOAD_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
textdomain ( LocaleName ) ;
main_config . load_mode = 3 ;
yon_interface_update ( widgets ) ;
on_update_clicked ( NULL , widgets ) ;
}
gboolean yon_tab_create_tags ( kernels_tab * tab ) {
@ -125,31 +132,47 @@ gboolean yon_tab_create_tags(kernels_tab *tab){
}
g_list_free ( list ) ;
if ( ! getuid ( ) ) {
if ( tab - > module_installed ) {
switch ( tab - > module_installed ) {
case 1 : {
yon_tag_add ( GTK_BOX ( tab - > install_tags_box ) , MODULE_INSTALLED_LABEL , " tag_green " , NULL ) ;
gtk_image_set_from_icon_name ( GTK_IMAGE ( tab - > module_icon ) , module_icon_path , GTK_ICON_SIZE_BUTTON ) ;
gtk_widget_show ( tab - > remove_module_button ) ;
gtk_widget_show ( tab - > update_module_button ) ;
gtk_widget_hide ( tab - > install_module_button ) ;
} else {
gtk_widget_hide ( tab - > remove_module_button ) ;
gtk_widget_hide ( tab - > update_module_button ) ;
gtk_widget_show ( tab - > install_module_button ) ;
gtk_widget_show ( tab - > remove_module_button ) ;
gtk_widget_show ( tab - > update_module_button ) ;
gtk_widget_hide ( tab - > install_module_button ) ;
gtk_widget_set_tooltip_text ( tab - > module_icon , MODULE_INSTALLED_LABEL ) ;
} break ;
case 0 : {
gtk_widget_hide ( tab - > remove_module_button ) ;
gtk_widget_hide ( tab - > update_module_button ) ;
gtk_widget_show ( tab - > install_module_button ) ;
} break ;
case - 1 : {
gtk_widget_hide ( tab - > remove_module_button ) ;
gtk_widget_hide ( tab - > update_module_button ) ;
gtk_widget_hide ( tab - > install_module_button ) ;
gtk_widget_hide ( tab - > module_label ) ;
} break ;
}
{
if ( tab - > package_installed ) {
switch ( tab - > package_installed ) {
case 1 : {
yon_tag_add ( GTK_BOX ( tab - > install_tags_box ) , PACKAGE_INSTALLED_LABEL , " tag_green " , NULL ) ;
gtk_image_set_from_icon_name ( GTK_IMAGE ( tab - > package_icon ) , package_icon_path , GTK_ICON_SIZE_BUTTON ) ;
gtk_widget_hide ( tab - > install_package_button ) ;
gtk_widget_show ( tab - > remove_package_button ) ;
gtk_widget_show ( tab - > update_package_button ) ;
} else {
gtk_widget_set_tooltip_text ( tab - > package_icon , PACKAGE_INSTALLED_LABEL ) ;
} break ;
case 0 : {
gtk_widget_show ( tab - > install_package_button ) ;
gtk_widget_hide ( tab - > remove_package_button ) ;
gtk_widget_hide ( tab - > update_package_button ) ;
} break ;
case - 1 : {
gtk_widget_hide ( tab - > remove_package_button ) ;
gtk_widget_hide ( tab - > update_package_button ) ;
gtk_widget_hide ( tab - > install_package_button ) ;
gtk_widget_hide ( tab - > package_label ) ;
}
}
if ( tab - > package_installed | | tab - > module_installed ) {
@ -157,7 +180,9 @@ gboolean yon_tab_create_tags(kernels_tab *tab){
char * launched = config ( KERNEL_BOOT_parameter ) ;
int boot_size ;
config_str boot_run = yon_config_load ( get_active_kernel_command , & boot_size ) ;
yon_char_remove_last_symbol ( boot_run [ 0 ] , ' \n ' ) ;
if ( boot_size > 0 ) {
yon_char_remove_last_symbol ( boot_run [ 0 ] , ' \n ' ) ;
}
if ( ( ! ( launched & & ! strcmp ( tab - > package , launched ) ) & & ( strcmp ( tab - > package , boot_run [ 0 ] ) ) ) ) {
gtk_widget_show ( tab - > launch_button ) ;
@ -166,14 +191,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 ) ;
}
}
}
@ -188,6 +209,10 @@ gboolean yon_tab_create_tags(kernels_tab *tab){
yon_tag_add ( GTK_BOX ( tab - > install_tags_box ) , UNKNOWN_LABEL , " tag_grey " , NULL ) ;
}
gtk_widget_show ( tab - > main_box ) ;
g_mutex_lock ( & main_config . update_mutex ) ;
main_config . update_active - - ;
g_mutex_unlock ( & main_config . update_mutex ) ;
return G_SOURCE_REMOVE ;
}
@ -200,85 +225,108 @@ char *yon_package_string_set(char *target){
}
void * yon_tab_set_installed ( kernels_tab * tab ) {
g_mutex_lock ( & main_config . update_mutex ) ;
main_config . update_active + + ;
g_mutex_unlock ( & main_config . update_mutex ) ;
char * target_module = yon_package_string_set ( tab - > module ) ;
char * target_package = yon_package_string_set ( tab - > package ) ;
char * check_install_command = get_package_is_installed_command ( target_module ) ; //if module installed
if ( ! system ( yon_debug_output ( " %s \n " , check_install_command ) ) ) {
tab - > module_installed = 1 ;
} else tab - > module_installed = 0 ;
free ( check_install_command ) ;
check_install_command = get_package_is_installed_command ( target_package ) ; //if package installed
if ( ! system ( yon_debug_output ( " %s \n " , check_install_command ) ) ) {
tab - > package_installed = 1 ;
} else tab - > package_installed = 0 ;
free ( check_install_command ) ;
check_install_command = get_package_is_updated_command ( target_module ) ; //if module has updates
if ( ! system ( yon_debug_output ( " %s \n " , check_install_command ) ) ) {
tab - > module_updated = 0 ;
} else tab - > module_updated = 1 ;
free ( check_install_command ) ;
check_install_command = get_package_is_updated_command ( target_package ) ; //if package has updates
if ( ! system ( yon_debug_output ( " %s \n " , check_install_command ) ) ) {
tab - > package_updated = 0 ;
} else tab - > package_updated = 1 ;
free ( check_install_command ) ;
char * check_install_command = NULL ;
if ( yon_char_is_empty ( target_module ) ) {
tab - > module_installed = - 1 ;
} else {
check_install_command = get_package_is_installed_command ( target_module ) ; //if module installed
if ( ! system ( yon_debug_output ( " %s \n " , check_install_command ) ) ) {
tab - > module_installed = 1 ;
} else tab - > module_installed = 0 ;
free ( check_install_command ) ;
check_install_command = get_package_is_updated_command ( target_module ) ; //if module has updates
if ( ! system ( yon_debug_output ( " %s \n " , check_install_command ) ) ) {
tab - > module_updated = 0 ;
} else tab - > module_updated = 1 ;
free ( check_install_command ) ;
}
if ( yon_char_is_empty ( target_package ) ) {
tab - > package_installed = - 1 ;
} else {
check_install_command = get_package_is_installed_command ( target_package ) ; //if package installed
if ( ! system ( yon_debug_output ( " %s \n " , check_install_command ) ) ) {
tab - > package_installed = 1 ;
} else tab - > package_installed = 0 ;
free ( check_install_command ) ;
check_install_command = get_package_is_updated_command ( target_package ) ; //if package has updates
if ( ! system ( yon_debug_output ( " %s \n " , check_install_command ) ) ) {
tab - > package_updated = 0 ;
} else tab - > package_updated = 1 ;
free ( check_install_command ) ;
}
if ( tab - > package_installed = = - 1 & & tab - > module_installed = = - 1 ) {
gtk_widget_destroy ( tab - > main_box ) ;
tab - > main_box = NULL ;
}
gdk_threads_add_idle ( ( GSourceFunc ) yon_tab_create_tags , tab ) ;
return NULL ;
}
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 ) {
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 ) ;
}
textdomain ( LocaleName ) ;
return NULL ;
}
@ -344,7 +392,8 @@ gboolean on_command_execute_success(GtkWidget *,gint status,main_window *widgets
g_mutex_unlock ( & main_config . progress_mutex ) ;
if ( ! status ) {
yon_ubl_status_box_render ( OPERATION_SUCCESS_LABEL , BACKGROUND_IMAGE_SUCCESS_TYPE ) ;
yon_interface_update ( widgets ) ;
on_update_clicked ( NULL , widgets ) ;
} else {
yon_ubl_status_box_render ( OPERATION_ERROR_LABEL , BACKGROUND_IMAGE_FAIL_TYPE ) ;
}
@ -393,7 +442,8 @@ gboolean yon_terminal_get_progress(main_window *widgets){
void * yon_command_execute_async ( char * command , main_window * widgets ) {
gtk_progress_bar_set_fraction ( GTK_PROGRESS_BAR ( widgets - > InstallationProgress ) , 0 ) ;
vte_terminal_reset ( VTE_TERMINAL ( widgets - > InstallTerminal ) , 0 , 1 ) ;
yon_terminal_integrated_start_shell ( widgets - > InstallTerminal , yon_debug_output ( " %s \n " , command ) , on_command_execute_success , widgets ) ;
yon_terminal_integrated_start_shell ( widgets - > InstallTerminal , yon_debug_output ( " %s \n " , command ) , NULL , NULL ) ;
g_signal_connect_after ( G_OBJECT ( widgets - > InstallTerminal ) , " child-exited " , G_CALLBACK ( on_command_execute_success ) , widgets ) ;
// yon_terminal_integrated_start(widgets->InstallTerminal,yon_debug_output("%s\n",command));
glong columns = vte_terminal_get_column_count ( VTE_TERMINAL ( widgets - > InstallTerminal ) ) ;
vte_terminal_set_size ( VTE_TERMINAL ( widgets - > InstallTerminal ) , columns , 20 ) ;
@ -477,7 +527,11 @@ 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 = NULL ;
if ( self = = tab - > update_module_button )
action_text = KERNEL_MODULE_UPDATE_CONFIRMATION_LABEL ( tab - > name ) ;
else
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 +558,10 @@ 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 ) ;
if ( self = = tab - > update_module_button )
data - > action_text = ADDITION_MODULE_UPDATE_CONFIRMATION_LABEL ( tab - > name ) ;
else
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 +576,11 @@ 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 = MODULE_INSTALL_CONFIRMATION_LABEL ( tab - > name ) ;
char * action_text = NULL ;
if ( self = = tab - > update_module_button )
action_text = KERNEL_PACKAGE_UPDATE_CONFIRMATION_LABEL ( tab - > name ) ;
else
action_text = KERNEL_PACKAGE_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 +607,10 @@ void on_package_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 ) ;
if ( self = = tab - > update_package_button )
data - > action_text = ADDITION_PACKAGE_UPDATE_CONFIRMATION_LABEL ( tab - > name ) ;
else
data - > action_text = ADDITION_PACKAGE_INSTALL_CONFIRMATION_LABEL ( tab - > name ) ;
data - > function = NULL ;
data - > data = NULL ;
if ( yon_confirmation_dialog_call ( self , data ) = = GTK_RESPONSE_ACCEPT ) {
@ -569,8 +633,33 @@ void on_module_remove_done(GtkWidget *self, int state, kernels_tab *tab){
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 * ) ;
int size ;
config_str cnf = yon_config_load ( SAVE_MODE_GET_COMMAND , & size ) ;
yon_char_remove_last_symbol ( cnf [ 0 ] , ' \n ' ) ;
SAVE_MODE_TYPE type = yon_ubl_save_mode_get_type ( cnf [ 0 ] ) ;
int installed_kernels = 0 ;
dictionary * cur_ker = NULL ;
for_dictionaries ( cur_ker , main_config . kernel_tabs ) {
switch ( type ) {
case SAVE_MODE_RAM_HOME :
case SAVE_MODE_SANDBOX : {
if ( ( ( kernels_tab * ) cur_ker - > data ) - > module_installed ) {
installed_kernels + + ;
} break ;
default :
if ( ( ( kernels_tab * ) cur_ker - > data ) - > package_installed | | ( ( kernels_tab * ) cur_ker - > data ) - > module_installed ) {
installed_kernels + + ;
}
} break ;
}
}
dialog_confirmation_data * data = malloc ( sizeof ( dialog_confirmation_data ) ) ;
data - > action_text = MODULE_REMOVE_CONFIRMATION_LABEL ( tab - > name ) ;
if ( installed_kernels > 1 ) {
data - > action_text = KERNEL_MODULE_REMOVE_CONFIRMATION_LABEL ( tab - > name ) ;
} else if ( installed_kernels = = 1 ) {
data - > action_text = KERNEL_REMOVE_LAST_CONFIRMATION_LABEL ( tab - > name ) ;
}
data - > function = NULL ;
data - > data = NULL ;
if ( yon_confirmation_dialog_call ( self , data ) = = GTK_RESPONSE_ACCEPT ) {
@ -588,8 +677,33 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){
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 * ) ;
int size ;
config_str cnf = yon_config_load ( SAVE_MODE_GET_COMMAND , & size ) ;
yon_char_remove_last_symbol ( cnf [ 0 ] , ' \n ' ) ;
SAVE_MODE_TYPE type = yon_ubl_save_mode_get_type ( cnf [ 0 ] ) ;
int installed_kernels = 0 ;
dictionary * cur_ker = NULL ;
for_dictionaries ( cur_ker , main_config . kernel_tabs ) {
switch ( type ) {
case SAVE_MODE_RAM_HOME :
case SAVE_MODE_SANDBOX : {
if ( ( ( kernels_tab * ) cur_ker - > data ) - > module_installed ) {
installed_kernels + + ;
} break ;
default :
if ( ( ( kernels_tab * ) cur_ker - > data ) - > package_installed | | ( ( kernels_tab * ) cur_ker - > data ) - > module_installed ) {
installed_kernels + + ;
}
} break ;
}
}
dialog_confirmation_data * data = malloc ( sizeof ( dialog_confirmation_data ) ) ;
data - > action_text = PACKAGE_REMOVE_CONFIRMATION_LABEL ( tab - > name ) ;
if ( installed_kernels > 1 ) {
data - > action_text = KERNEL_PACKAGE_REMOVE_CONFIRMATION_LABEL ( tab - > name ) ;
} else if ( installed_kernels = = 1 ) {
data - > action_text = KERNEL_REMOVE_LAST_CONFIRMATION_LABEL ( tab - > name ) ;
}
data - > function = NULL ;
data - > data = NULL ;
int resp = yon_confirmation_dialog_call ( self , data ) ;
@ -611,7 +725,8 @@ void on_launch_cliked(GtkWidget *self,dictionary *dict){
data - > data = NULL ;
if ( yon_confirmation_dialog_call ( self , data ) = = GTK_RESPONSE_ACCEPT ) {
yon_config_set ( KERNEL_BOOT_parameter , tab - > package ) ;
yon_interface_update ( widgets ) ;
on_update_clicked ( NULL , widgets ) ;
}
}
@ -657,6 +772,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 +789,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 +877,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,58 +925,51 @@ 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 ) {
yon_dictionary_free_all ( main_config . kernel_tabs , free ) ;
yon_dictionary_free_all ( main_config . addition_tabs , free ) ;
main_config . kernel_tabs = NULL ;
main_config . addition_tabs = NULL ;
int lock = 0 ;
g_mutex_lock ( & main_config . update_mutex ) ;
lock = main_config . update_active ;
g_mutex_unlock ( & main_config . update_mutex ) ;
if ( ! lock ) {
yon_dictionary_free_all ( main_config . kernel_tabs , free ) ;
yon_dictionary_free_all ( main_config . addition_tabs , free ) ;
main_config . kernel_tabs = NULL ;
main_config . addition_tabs = NULL ;
yon_interface_update ( widgets ) ;
}
void on_selection_changed ( GtkWidget * , GtkListBoxRow * row , main_window * widgets ) {
if ( row ) {
gtk_widget_set_sensitive ( widgets - > InfoButton , 1 ) ;
} else {
gtk_widget_set_sensitive ( widgets - > InfoButton , 0 ) ;
}
}
void on_info_clicked ( GtkWidget * , main_window * widgets ) {
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 ) , GTK_WINDOW ( widgets - > Window ) , INFO_TITLE_LABEL , icon_path , " info_window " ) ;
GtkWidget * current_tre e= NULL ;
if ( gtk_notebook_get_current_page ( GTK_NOTEBOOK ( widgets - > MainNotebook ) ) = = 0 ) {
current_tree = widgets - > KernelsPackageBox ;
yon_gtk_window_setup ( GTK_WINDOW ( window - > window ) , NULL , INFO_TITLE_LABEL , icon_path , " info_window " ) ;
char * packag e= NULL ;
if ( self = = tab - > module_label ) {
package = yon_char_new ( tab - > module ) ;
} else {
current_tree = widgets - > AdditionsPackageBox ;
package = yon_char_new ( tab - > package ) ;
}
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 ) ;
}
int size ;
if ( strstr ( package , " , " ) ) {
char * temp = yon_char_replace ( package , " , " , " " ) ;
free ( package ) ;
package = temp ;
}
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 +1086,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 +1111,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 ) ;
@ -1014,6 +1123,11 @@ void yon_main_window_complete(main_window *widgets){
g_signal_connect ( G_OBJECT ( widgets - > LoadLocalMenuItem ) , " activate " , G_CALLBACK ( on_config_local_load ) , widgets ) ;
g_signal_connect ( G_OBJECT ( widgets - > LoadCustomMenuItem ) , " activate " , G_CALLBACK ( on_config_custom_load ) , widgets ) ;
int paned_pos = 0 ;
if ( yon_window_config_get_parameter ( " settings " , " paned_pos " , & paned_pos , YON_TYPE_INT ) ) {
gtk_paned_set_position ( GTK_PANED ( widgets - > TerminalPaned ) , paned_pos ) ;
}
yon_root_button_setup ( ( template_main_window * ) widgets , main_config . launch_arguments , main_config . launch_size ) ;
if ( getuid ( ) ) {
gtk_widget_set_sensitive ( widgets - > BuildingButton , 0 ) ;
@ -1025,10 +1139,11 @@ void yon_main_window_complete(main_window *widgets){
glong columns = vte_terminal_get_column_count ( VTE_TERMINAL ( widgets - > InstallTerminal ) ) ;
vte_terminal_set_size ( VTE_TERMINAL ( widgets - > InstallTerminal ) , columns , 20 ) ;
yon_gtk_widget_set_scroll_window_for_scroll ( widgets - > InstallTerminal , GTK_SCROLLBAR ( widgets - > TerminalScroll ) ) ;
gtk_paned_add2 ( GTK_PANED ( widgets - > TerminalPaned ) , widgets - > TerminalRevealer ) ;
y on_interface_ update( widgets ) ;
on_update_clicked ( NULL , widgets ) ;
yon_save_window_set_postsave_function ( on_save_done , widgets ) ;
}
yon_load_proceed ( YON_CONFIG_LOCAL ) ;