@ -1,105 +1,53 @@
# include "ubinstall-gtk.h"
int yon_kernel_save ( main_window * widgets ) {
GList * list = gtk_container_get_children ( GTK_CONTAINER ( widgets - > KernelListBox ) ) ;
char * config_val = config ( packages_parameter ) ;
if ( yon_char_is_empty ( config_val ) ) {
yon_config_register ( packages_parameter , packages_parameter_command , NULL ) ;
yon_config_set_status ( packages_parameter , - 1 ) ;
}
char * enabled_module = NULL ;
int overall_size = 0 ;
int active_size = 0 ;
for ( GList * iter = list ; iter ; iter = iter - > next ) {
overall_size + + ;
kernel_row * row = g_object_get_data ( G_OBJECT ( iter - > data ) , " kernel_row " ) ;
if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( row - > InstallCheck ) ) ) {
if ( gtk_widget_get_sensitive ( row - > InstallCheck ) ) {
char * append_str = yon_char_replace ( row - > modules , " " , " , " ) ;
yon_config_append_elements ( packages_parameter , append_str , " , " ) ;
free ( append_str ) ;
active_size + + ;
}
if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( row - > EnableRadio ) ) ) {
enabled_module = row - > package ;
}
} else {
char * append_str = yon_char_replace ( row - > modules , " " , " , " ) ;
yon_config_remove_elements ( packages_parameter , append_str , " , " ) ;
free ( append_str ) ;
}
}
if ( ! yon_char_is_empty ( enabled_module ) ) {
yon_config_register ( KERNEL_BOOT_parameter , KERNEL_BOOT_parameter_command , enabled_module ) ;
} else {
yon_config_remove_by_key ( KERNEL_BOOT_parameter ) ;
}
if ( ! main_config . configure_mode ) {
yon_debug_output ( " %s \n " , yon_config_save_args_simple ( main_config . config_load_path , packages_parameter , KERNEL_BOOT_parameter , NULL ) ) ;
}
return 1 ;
}
int yon_kernel_addon_save ( main_window * widgets ) {
char * parameter = config ( packages_parameter ) ;
GList * list = gtk_container_get_children ( GTK_CONTAINER ( widgets - > KernelAddonListBox ) ) ;
if ( yon_char_is_empty ( parameter ) ) {
yon_config_register ( packages_parameter , packages_parameter_command , NULL ) ;
}
for ( GList * iter = list ; iter ; iter = iter - > next ) {
kernel_addon_row * row = g_object_get_data ( G_OBJECT ( iter - > data ) , " kernel_row " ) ;
if ( gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( row - > InstallCheck ) ) ) {
if ( gtk_widget_get_sensitive ( row - > InstallCheck ) ) {
yon_config_append_elements ( packages_parameter , row - > modules , " , " ) ;
}
} else {
char * append_str = yon_char_replace ( row - > modules , " " , " , " ) ;
yon_config_remove_elements ( packages_parameter , row - > modules , " , " ) ;
free ( append_str ) ;
}
}
if ( ! main_config . configure_mode ) {
int size ;
config_str parameters = yon_config_get_save_parameters_by_key ( & size , packages_parameter , NULL ) ;
if ( parameters ) {
char * command_parameters = yon_char_parsed_to_string ( parameters , size , " -- " ) ;
char * command = yon_char_unite ( ubconfig_dull_command , " --target system " , command_parameters , NULL ) ;
if ( ! system ( yon_debug_output ( " %s \n " , command ) ) ) { }
free ( command ) ;
yon_char_parsed_free ( parameters , size ) ;
// void on_os_components_uncheck_all(GtkWidget *,main_window *widgets){
// int active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->OSSoftwareUncheckAllCheck));
// switch(active){
// case 1:{
// GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox));
// GList *iter;
// for(iter = list;iter;iter=iter->next){
// os_row *row = g_object_get_data(iter->data,"kernel_row");
// int sensitive = gtk_widget_get_sensitive(row->InstallCheck);
// if (sensitive){
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0);
// }
// }
// } break;
// }
// gtk_widget_hide(widgets->OSSoftwareUncheckAllCheck);
// g_signal_handlers_block_by_func(G_OBJECT(widgets->OSSoftwareUncheckAllCheck),on_os_components_uncheck_all,widgets);
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->OSSoftwareUncheckAllCheck),0);
// g_signal_handlers_unblock_by_func(G_OBJECT(widgets->OSSoftwareUncheckAllCheck),on_os_components_uncheck_all,widgets);
// }
void on_os_components_switch_all ( GtkWidget * self , main_window * widgets ) {
g_signal_handlers_block_by_func ( G_OBJECT ( self ) , G_CALLBACK ( on_os_components_switch_all ) , widgets ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( self ) , 0 ) ;
g_signal_handlers_unblock_by_func ( G_OBJECT ( self ) , G_CALLBACK ( on_os_components_switch_all ) , widgets ) ;
int active = ! ! g_object_get_data ( G_OBJECT ( self ) , " uncheck " ) ;
GList * list = gtk_container_get_children ( GTK_CONTAINER ( widgets - > OSSoftwareListBox ) ) ;
GList * iter ;
for ( iter = list ; iter ; iter = iter - > next ) {
os_row * row = g_object_get_data ( iter - > data , " kernel_row " ) ;
int sensitive = gtk_widget_get_sensitive ( row - > InstallCheck ) ;
if ( sensitive ) {
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( row - > InstallCheck ) , ! active ) ;
}
}
return 1 ;
}
void on_os_components_uncheck_all ( GtkWidget * , main_window * widgets ) {
int active = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( widgets - > OSSoftwareUncheckAllCheck ) ) ;
switch ( active ) {
case 1 : {
GList * list = gtk_container_get_children ( GTK_CONTAINER ( widgets - > OSSoftwareListBox ) ) ;
GList * iter ;
for ( iter = list ; iter ; iter = iter - > next ) {
os_row * row = g_object_get_data ( iter - > data , " kernel_row " ) ;
int sensitive = gtk_widget_get_sensitive ( row - > InstallCheck ) ;
if ( sensitive ) {
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( row - > InstallCheck ) , 0 ) ;
}
}
} break ;
case 0 : gtk_button_set_label ( GTK_BUTTON ( self ) , UNCHECK_ALL_LABEL ) ;
g_object_set_data ( G_OBJECT ( self ) , " uncheck " , widgets ) ;
break ;
case 1 : gtk_button_set_label ( GTK_BUTTON ( self ) , CHECK_ALL_LABEL ) ;
g_object_set_data ( G_OBJECT ( self ) , " uncheck " , NULL ) ;
}
gtk_widget_hide ( widgets - > OSSoftwareUncheckAllCheck ) ;
g_signal_handlers_block_by_func ( G_OBJECT ( widgets - > OSSoftwareUncheckAllCheck ) , on_os_components_uncheck_all , widgets ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widgets - > OSSoftwareUncheckAllCheck ) , 0 ) ;
g_signal_handlers_unblock_by_func ( G_OBJECT ( widgets - > OSSoftwareUncheckAllCheck ) , on_os_components_uncheck_all , widgets ) ;
}
int yon_os_components_check_packages_size ( GtkWidget * , main_window * widgets ) {
long pacman_size = 0 ;
{
int active = 1 ;
GList * list = gtk_container_get_children ( GTK_CONTAINER ( widgets - > OSSoftwareListBox ) ) ;
GList * listiter ;
for ( listiter = list ; listiter ; listiter = listiter - > next ) {
@ -108,10 +56,18 @@ int yon_os_components_check_packages_size(GtkWidget *, main_window *widgets){
long cur_size = row - > size_raw ;
pacman_size + = cur_size ;
if ( gtk_widget_get_sensitive ( row - > InstallCheck ) ) {
gtk_widget_show ( widgets - > OSSoftwareUncheckAllCheck ) ;
// gtk_widget_show(widgets->OSSoftwareUncheckAllCheck);
active = 0 ;
}
}
}
switch ( active ) {
case 0 : gtk_button_set_label ( GTK_BUTTON ( widgets - > OSSoftwareUncheckAllCheck ) , UNCHECK_ALL_LABEL ) ;
g_object_set_data ( G_OBJECT ( widgets - > OSSoftwareUncheckAllCheck ) , " uncheck " , widgets ) ;
break ;
case 1 : gtk_button_set_label ( GTK_BUTTON ( widgets - > OSSoftwareUncheckAllCheck ) , CHECK_ALL_LABEL ) ;
g_object_set_data ( G_OBJECT ( widgets - > OSSoftwareUncheckAllCheck ) , " uncheck " , NULL ) ;
}
}
{
GtkTreeIter iter ;
@ -348,12 +304,9 @@ void yon_os_components_init(main_window *widgets){
if ( ! main_config . configure_mode ) {
yon_config_update_by_args ( main_config . config_load_path , modules_parameter , NULL ) ;
}
// int size = 0;
GList * list = gtk_container_get_children ( GTK_CONTAINER ( widgets - > OSSoftwareListBox ) ) ;
GList * iter ;
for ( iter = list ; iter ; iter = iter - > next ) {
// os_row *row = g_object_get_data(iter->data,"kernel_row");
// free(row);
gtk_widget_destroy ( GTK_WIDGET ( iter - > data ) ) ;
}
if ( ! gtk_widget_get_parent ( widgets - > OSSpinner ) )
@ -364,25 +317,48 @@ void yon_os_components_init(main_window *widgets){
while ( gtk_events_pending ( ) ) gtk_main_iteration ( ) ;
}
void on_software_uncheck_all ( GtkWidget * , main_window * widgets ) {
int active = gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON ( widgets - > AdditionalComponentsUncheckAllCheck ) ) ;
// void on_software_uncheck_all(GtkWidget *, main_window *widgets){
// int active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->AdditionalComponentsUncheckAllCheck));
// switch(active){
// case 1:{
// GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdditionalComponentsList));
// GList *iter;
// for(iter = list;iter;iter=iter->next){
// os_row *row = g_object_get_data(iter->data,"kernel_row");
// int sensitive = gtk_widget_get_sensitive(row->InstallCheck);
// if (sensitive){
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0);
// }
// }
// } break;
// }
// gtk_widget_hide(widgets->AdditionalComponentsUncheckAllCheck);
// g_signal_handlers_block_by_func(G_OBJECT(widgets->AdditionalComponentsUncheckAllCheck),on_software_switch_all,widgets);
// gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->AdditionalComponentsUncheckAllCheck),0);
// g_signal_handlers_unblock_by_func(G_OBJECT(widgets->AdditionalComponentsUncheckAllCheck),on_software_switch_all,widgets);
// }
void on_software_switch_all ( GtkWidget * self , main_window * widgets ) {
g_signal_handlers_block_by_func ( G_OBJECT ( self ) , G_CALLBACK ( on_software_switch_all ) , widgets ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( self ) , 0 ) ;
g_signal_handlers_unblock_by_func ( G_OBJECT ( self ) , G_CALLBACK ( on_software_switch_all ) , widgets ) ;
int active = ! ! g_object_get_data ( G_OBJECT ( self ) , " uncheck " ) ;
GList * list = gtk_container_get_children ( GTK_CONTAINER ( widgets - > AdditionalComponentsList ) ) ;
GList * iter ;
for ( iter = list ; iter ; iter = iter - > next ) {
os_row * row = g_object_get_data ( iter - > data , " kernel_row " ) ;
int sensitive = gtk_widget_get_sensitive ( row - > InstallCheck ) ;
if ( sensitive ) {
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( row - > InstallCheck ) , ! active ) ;
}
}
switch ( active ) {
case 1 : {
GList * list = gtk_container_get_children ( GTK_CONTAINER ( widgets - > AdditionalComponentsList ) ) ;
GList * iter ;
for ( iter = list ; iter ; iter = iter - > next ) {
os_row * row = g_object_get_data ( iter - > data , " kernel_row " ) ;
int sensitive = gtk_widget_get_sensitive ( row - > InstallCheck ) ;
if ( sensitive ) {
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( row - > InstallCheck ) , 0 ) ;
}
}
} break ;
case 0 : gtk_button_set_label ( GTK_BUTTON ( self ) , UNCHECK_ALL_LABEL ) ;
g_object_set_data ( G_OBJECT ( self ) , " uncheck " , widgets ) ;
break ;
case 1 : gtk_button_set_label ( GTK_BUTTON ( self ) , CHECK_ALL_LABEL ) ;
g_object_set_data ( G_OBJECT ( self ) , " uncheck " , NULL ) ;
}
gtk_widget_hide ( widgets - > AdditionalComponentsUncheckAllCheck ) ;
g_signal_handlers_block_by_func ( G_OBJECT ( widgets - > AdditionalComponentsUncheckAllCheck ) , on_software_uncheck_all , widgets ) ;
gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON ( widgets - > AdditionalComponentsUncheckAllCheck ) , 0 ) ;
g_signal_handlers_unblock_by_func ( G_OBJECT ( widgets - > AdditionalComponentsUncheckAllCheck ) , on_software_uncheck_all , widgets ) ;
}
int yon_software_save ( main_window * widgets ) {
@ -427,6 +403,7 @@ int yon_software_save(main_window *widgets){
int yon_software_check_packages_size ( GtkWidget * , main_window * widgets ) {
long pacman_size = 0 ;
{
int active = 1 ;
GList * list = gtk_container_get_children ( GTK_CONTAINER ( widgets - > AdditionalComponentsList ) ) ;
GList * listiter ;
for ( listiter = list ; listiter ; listiter = listiter - > next ) {
@ -435,10 +412,18 @@ int yon_software_check_packages_size(GtkWidget *, main_window *widgets){
long cur_size = row - > size_raw ;
pacman_size + = cur_size ;
if ( gtk_widget_get_sensitive ( row - > InstallCheck ) ) {
gtk_widget_show ( widgets - > AdditionalComponentsUncheckAllCheck ) ;
// gtk_widget_show(widgets->AdditionalComponentsUncheckAllCheck);
active = 0 ;
}
}
}
switch ( active ) {
case 0 : gtk_button_set_label ( GTK_BUTTON ( widgets - > AdditionalComponentsUncheckAllCheck ) , UNCHECK_ALL_LABEL ) ;
g_object_set_data ( G_OBJECT ( widgets - > AdditionalComponentsUncheckAllCheck ) , " uncheck " , widgets ) ;
break ;
case 1 : gtk_button_set_label ( GTK_BUTTON ( widgets - > AdditionalComponentsUncheckAllCheck ) , CHECK_ALL_LABEL ) ;
g_object_set_data ( G_OBJECT ( widgets - > AdditionalComponentsUncheckAllCheck ) , " uncheck " , NULL ) ;
}
}
{
GtkTreeIter iter ;
@ -567,8 +552,10 @@ int yon_pacman_software_save(main_window *widgets){
if ( ! yon_installation_check_packages_size ( widgets ) ) return 0 ;
GtkTreeIter iter ;
GtkTreeModel * model = GTK_TREE_MODEL ( widgets - > PacmanSoftwareChosenList ) ;
char * old_packages = config ( packages_parameter ) ;
yon_config_register ( packages_parameter , packages_parameter_command , NULL ) ;
yon_config_set_status ( packages_parameter , - 1 ) ;
int status = yon_char_is_empty ( old_packages ) ;
yon_config_set_status ( packages_parameter , status - 1 ) ;
for_iter ( model , & iter ) {
char * target ;
@ -764,8 +751,8 @@ void *yon_pacman_load(struct pacman_struct *pacman){
const char * find_package = pacman - > find_package ;
// char *command = get_local_module_info_command(find_package);
pacman - > packages = yon_packages_find ( YON_PACKAGES_SYNC , find_package , & pacman - > packages_size ) ;
// g_idle_add((GSourceFunc)yon_pacman_fill,pacman);
yon_pacman_fill ( pacman ) ;
g_idle_add ( ( GSourceFunc ) yon_pacman_fill , pacman ) ;
// yon_pacman_fill(pacman);
return NULL ;
}