You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
203 lines
8.3 KiB
203 lines
8.3 KiB
#include "ubinstall-gtk.h"
|
|
|
|
int yon_kernel_save(main_window *widgets){
|
|
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelListBox));
|
|
char *install_modules = "";
|
|
char *enabled_module = NULL;
|
|
for(GList *iter = list;iter;iter = iter->next){
|
|
kernel_row *row = g_object_get_data(G_OBJECT(iter->data),"kernel_row");
|
|
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck))){
|
|
char *temp = yon_char_unite(install_modules,!yon_char_is_empty(install_modules)?" ":"",row->modules,NULL);
|
|
if (!yon_char_is_empty(install_modules)) free(install_modules);
|
|
install_modules = temp;
|
|
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->EnableRadio))){
|
|
enabled_module = row->package;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!yon_char_is_empty(install_modules)){
|
|
yon_config_register(modules_extra_parameter,modules_extra_parameter_command,install_modules);
|
|
} else {
|
|
yon_config_remove_by_key(modules_extra_parameter);
|
|
}
|
|
yon_config_register(KERNEL_BOOT_parameter,KERNEL_BOOT_parameter_command,enabled_module);
|
|
return 1;
|
|
}
|
|
|
|
int yon_kernel_addon_save(main_window *widgets){
|
|
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelAddonListBox));
|
|
char *install_modules = "";
|
|
for(GList *iter = list;iter;iter = iter->next){
|
|
kernel_row *row = g_object_get_data(G_OBJECT(iter->data),"kernel_row");
|
|
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck))){
|
|
char *temp = yon_char_unite(install_modules,!yon_char_is_empty(install_modules)?" ":"",row->modules,NULL);
|
|
if (!yon_char_is_empty(install_modules)) free(install_modules);
|
|
install_modules = temp;
|
|
}
|
|
}
|
|
|
|
if (!yon_char_is_empty(install_modules)){
|
|
char *parameter = config(modules_extra_parameter);
|
|
char *parameter_new = yon_char_unite(!yon_char_is_empty(parameter)?parameter:"",!yon_char_is_empty(parameter)?",":"",install_modules,NULL);
|
|
yon_config_register(modules_extra_parameter,modules_extra_parameter_command,parameter_new);
|
|
free(parameter_new);
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
int yon_os_components_save(main_window *widgets){
|
|
GtkTreeIter iter;
|
|
GtkTreeModel *model = GTK_TREE_MODEL(widgets->OSSoftwareList);
|
|
int size = 0;
|
|
config_str modules = NULL;
|
|
for_iter(model,&iter){
|
|
char *target;
|
|
int status;
|
|
gtk_tree_model_get(model,&iter,0,&status,1,&target,-1);
|
|
if (status){
|
|
yon_char_parsed_add_or_create_if_exists(modules,&size,target);
|
|
}
|
|
}
|
|
if (size){
|
|
char *final = yon_char_parsed_to_string(modules,size,",");
|
|
yon_config_register(modules_parameter,modules_parameter_command,final);
|
|
} else {
|
|
yon_config_remove_by_key(modules_parameter);
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
void yon_os_components_init(main_window *widgets){
|
|
GtkTreeIter iter;
|
|
if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->OSSoftwareList),&iter)){
|
|
int base_size;
|
|
config_str base = yon_file_ls(system_base_modules_path,&base_size);
|
|
for (int i=0;i<base_size;i++){
|
|
char *version = yon_packages_get_version(YON_PACKAGES_SYNC,base[i]);
|
|
char *description = yon_packages_get_description(YON_PACKAGES_SYNC,base[i]);
|
|
yon_char_remove_last_symbol(base[i],'\n');
|
|
gtk_list_store_append(widgets->OSSoftwareList,&iter);
|
|
gtk_list_store_set(widgets->OSSoftwareList,&iter,0,0,1,base[i],2,version,3,description,-1);
|
|
}
|
|
int modules_size;
|
|
config_str modules = yon_file_ls(system_modules_path,&modules_size);
|
|
for (int i=0;i<modules_size;i++){
|
|
yon_char_remove_last_symbol(modules[i],'\n');
|
|
gtk_list_store_append(widgets->OSSoftwareList,&iter);
|
|
char *version = yon_packages_get_version(YON_PACKAGES_SYNC,base[i]);
|
|
char *description = yon_packages_get_description(YON_PACKAGES_SYNC,base[i]);
|
|
gtk_list_store_set(widgets->OSSoftwareList,&iter,0,0,1,modules[i],2,version,3,description,-1);
|
|
}
|
|
}
|
|
|
|
char *modules = config(modules_parameter);
|
|
if (!yon_char_is_empty(modules)){
|
|
int parsed_size;
|
|
config_str parsed = yon_char_parse(modules,&parsed_size,",");
|
|
GtkTreeIter iter;
|
|
for_iter (GTK_TREE_MODEL(widgets->OSSoftwareList),&iter){
|
|
char *target;
|
|
gtk_tree_model_get(GTK_TREE_MODEL(widgets->OSSoftwareList),&iter,1,&target,-1);
|
|
if (yon_char_parsed_check_exist(parsed,parsed_size,target)>-1){
|
|
gtk_list_store_set(widgets->OSSoftwareList,0,1,-1);
|
|
} else {
|
|
gtk_list_store_set(widgets->OSSoftwareList,0,0,-1);
|
|
}
|
|
}
|
|
yon_char_parsed_free(parsed,parsed_size);
|
|
}
|
|
}
|
|
|
|
int yon_software_save(main_window *widgets){
|
|
|
|
GtkTreeIter iter;
|
|
GtkTreeModel *model = GTK_TREE_MODEL(widgets->AdditionalSoftwareList);
|
|
int size = 0;
|
|
config_str modules = NULL;
|
|
for_iter(model,&iter){
|
|
char *target;
|
|
int status;
|
|
gtk_tree_model_get(model,&iter,0,&status,1,&target,-1);
|
|
if (status){
|
|
yon_char_parsed_add_or_create_if_exists(modules,&size,target);
|
|
}
|
|
}
|
|
if (size){
|
|
char *final = yon_char_parsed_to_string(modules,size,",");
|
|
char *parameter = config(modules_extra_parameter);
|
|
char *parameter_new = yon_char_unite(!yon_char_is_empty(parameter)?parameter:"",!yon_char_is_empty(parameter)?",":"",final,NULL);
|
|
yon_config_register(modules_extra_parameter,modules_extra_parameter_command,parameter_new);
|
|
free(parameter_new);
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
void yon_software_init(main_window *widgets){
|
|
GtkTreeIter iter;
|
|
if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->AdditionalSoftwareList),&iter)){
|
|
int size;
|
|
config_str parsed = NULL;
|
|
parsed = yon_resource_open_file(additional_software_path,&size);
|
|
for (int i=1;i<size;i++){
|
|
int module_size;
|
|
config_str module_parsed = yon_char_parse(parsed[i],&module_size,"|");
|
|
if (module_size){
|
|
gtk_list_store_append(widgets->AdditionalSoftwareList,&iter);
|
|
gtk_list_store_set(widgets->AdditionalSoftwareList,&iter,0,1,1,module_parsed[0],2,module_parsed[1],3,module_parsed[2],-1); //2,module_parsed[2]
|
|
yon_char_parsed_free(module_parsed,module_size);
|
|
}
|
|
}
|
|
if (size) yon_char_parsed_free(parsed,size);
|
|
}
|
|
|
|
char *modules = config(modules_extra_parameter);
|
|
|
|
int size;
|
|
config_str parsed = yon_char_parse(modules,&size,",");
|
|
for_iter(GTK_TREE_MODEL(widgets->AdditionalSoftwareList),&iter){
|
|
char *target;
|
|
gtk_tree_model_get(GTK_TREE_MODEL(widgets->AdditionalSoftwareList),&iter,1,&target);
|
|
if (yon_char_parsed_check_exist(parsed,size,target)>-1){
|
|
gtk_list_store_set(widgets->AdditionalSoftwareList,&iter,0,1,-1);
|
|
} else {
|
|
gtk_list_store_set(widgets->AdditionalSoftwareList,&iter,0,0,-1);
|
|
}
|
|
}
|
|
yon_char_parsed_free(parsed,size);
|
|
}
|
|
|
|
int yon_pacman_software_save(main_window *widgets){
|
|
GtkTreeIter iter;
|
|
GtkTreeModel *model = GTK_TREE_MODEL(widgets->PacmanSoftwareChosenList);
|
|
int size;
|
|
config_str parameters = NULL;
|
|
for_iter(model,&iter){
|
|
char *target;
|
|
gtk_tree_model_get(model,&iter,1,&target,-1);
|
|
yon_char_parsed_add_or_create_if_exists(parameters,&size,target);
|
|
}
|
|
char *final = yon_char_parsed_to_string(parameters,size,",");
|
|
yon_char_parsed_free(parameters,size);
|
|
if (!yon_char_is_empty(final)){
|
|
yon_config_register(packages_parameter,packages_parameter_command,final);
|
|
} else {
|
|
yon_config_remove_by_key(packages_parameter);
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
void yon_pacman_init(main_window *widgets){
|
|
char *pacman_packages = config(packages_parameter);
|
|
|
|
int size;
|
|
config_str parsed = yon_char_parse(pacman_packages,&size,",");
|
|
for (int i=0;i<size;i++){
|
|
char *description = yon_packages_get_description(YON_PACKAGES_SYNC,parsed[i]);
|
|
char *version = yon_packages_get_version(YON_PACKAGES_SYNC,parsed[i]);
|
|
GtkTreeIter iter;
|
|
gtk_list_store_append(widgets->PacmanSoftwareChosenList,&iter);
|
|
gtk_list_store_set(widgets->PacmanSoftwareChosenList,&iter,0,1,1,parsed[i],2,version,3,description,-1);
|
|
}
|
|
yon_char_parsed_free(parsed,size);
|
|
} |