From 22fdc6a99901a4e8771ecfa91619d3a61a8db348 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 6 Aug 2025 18:29:17 +0600 Subject: [PATCH] Installation process finish; WIP os components --- gresource.xml | 1 + source/CMakeLists.txt | 1 + source/ubinstall-gtk-components.c | 111 ++++++++++++++----- source/ubinstall-gtk-kernel.c | 4 +- source/ubinstall-gtk-log.c | 4 +- source/ubinstall-gtk-network.c | 10 +- source/ubinstall-gtk-page-switch.c | 16 ++- source/ubinstall-gtk-saving.c | 45 +++++++- source/ubinstall-gtk-startup-services.c | 2 +- source/ubinstall-gtk.c | 17 +-- source/ubinstall-gtk.h | 84 +++++++++------ ubinstall-gtk-kernel-row.glade | 2 +- ubinstall-gtk-os-row.glade | 135 ++++++++++++++++++++++++ ubinstall-gtk.glade | 69 ++++-------- 14 files changed, 365 insertions(+), 136 deletions(-) create mode 100644 ubinstall-gtk-os-row.glade diff --git a/gresource.xml b/gresource.xml index 0c44160..0ed7fcf 100644 --- a/gresource.xml +++ b/gresource.xml @@ -12,6 +12,7 @@ ubinstall-gtk-menu.glade ubinstall-gtk-menu-item.glade ubinstall-gtk-kernel-row.glade + ubinstall-gtk-os-row.glade ubinstall-gtk-service-window.glade ubinstall-gtk-bootloader-user.glade ubinstall-gtk-network-box.glade diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 8d983f6..990ee99 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -69,6 +69,7 @@ set(DEPENDFILES ../ubinstall-gtk-menu.glade ../ubinstall-gtk-menu-item.glade ../ubinstall-gtk-kernel-row.glade + ../ubinstall-gtk-os-row.glade ../ubinstall-gtk-service-window.glade ../ubinstall-gtk-bootloader-user.glade ../ubinstall-gtk-network-box.glade diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index e637f86..45e586d 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -52,18 +52,19 @@ int yon_kernel_addon_save(main_window *widgets){ } int yon_os_components_save(main_window *widgets){ - GtkTreeIter iter; - GtkTreeModel *model = GTK_TREE_MODEL(widgets->OSSoftwareList); - int size = 0; + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox)); + GList *iter; + int size; config_str modules = NULL; - for_iter(model,&iter){ - char *target; - int status; - gtk_tree_model_get(model,&iter,0,&status,1,&target,-1); + for(iter = list;iter;iter=iter->next){ + kernel_row *row = g_object_get_data(iter->data,"kernel_row"); + char *target = row->name; + int status = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck)); if (status){ yon_char_parsed_add_or_create_if_exists(modules,&size,target); } } + g_list_free(list); if (size){ char *final = yon_char_parsed_to_string(modules,size,","); yon_config_register(modules_parameter,modules_parameter_command,final); @@ -73,26 +74,79 @@ int yon_os_components_save(main_window *widgets){ return 1; } +os_row *yon_os_row_new(){ + os_row *row = new(os_row); + GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_os_row); + row->RowBox = yon_gtk_builder_get_widget(builder,"TableRow"); + row->InstallCheck = yon_gtk_builder_get_widget(builder,"InstallCheck"); + row->NameLabel = yon_gtk_builder_get_widget(builder,"NameLabel"); + row->TagsBox = yon_gtk_builder_get_widget(builder,"TagsBox"); + row->VersionLabel = yon_gtk_builder_get_widget(builder,"VersionLabel"); + row->DescriptionLabel = yon_gtk_builder_get_widget(builder,"DescriptionLabel"); + row->name=NULL; + row->modules=NULL; + row->version=NULL; + + g_signal_connect(G_OBJECT(row->InstallCheck),"toggled",G_CALLBACK(on_kernel_install_enabled),row); + + row->row = gtk_list_box_row_new(); + gtk_container_add(GTK_CONTAINER(row->row),row->RowBox); + gtk_widget_show(row->row); + + g_object_set_data(G_OBJECT(row->InstallCheck),"kernel_row",row); + g_object_set_data(G_OBJECT(row->row),"kernel_row",row); + + return row; +} + +void yon_os_row_setup(os_row *row, char *name, char *version,char *tags, char *description){ + row->name = yon_char_new(name); + + char *description_full = yon_char_new(description); + if (strlen(description)>100){ + guint size; + config_str description_wrapped = yon_char_wrap_to_lines(description,3,&size); + description_full = yon_char_parsed_to_string(description_wrapped,size,"\n"); + yon_char_parsed_free(description_wrapped,size); + } + gtk_label_set_label(GTK_LABEL(row->NameLabel),name); + gtk_label_set_label(GTK_LABEL(row->VersionLabel),version); + gtk_label_set_label(GTK_LABEL(row->DescriptionLabel),description_full); + + yon_kernel_row_setup_tags((kernel_row*)row,tags); + free(description_full); +} + void yon_os_components_init(main_window *widgets){ - GtkTreeIter iter; - if (!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(widgets->OSSoftwareList),&iter)){ + int size = 0; + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox)); + GList *iter; + if (!list){ int base_size; - config_str base = yon_file_ls(system_base_modules_path,&base_size); + config_str base = yon_config_load(get_modules_command,&base_size); for (int i=0;iOSSoftwareList,&iter); - gtk_list_store_set(widgets->OSSoftwareList,&iter,0,0,1,base[i],2,version,3,description,-1); + int parsed_size; + config_str parsed = yon_char_parse(base[i],&parsed_size,";"); + char *version = parsed[1]; + char *name = parsed[0]; + char *tags = yon_char_replace(parsed[2]," ",", "); + char *description = parsed[3]; + os_row *row = yon_os_row_new(); + yon_os_row_setup(row,name,version,tags,description); + gtk_list_box_insert(GTK_LIST_BOX(widgets->OSSoftwareListBox),row->row,-1); + int min_size=0; + gtk_widget_get_preferred_width(row->NameLabel,&min_size,NULL); + if (min_size>size) size=min_size; + + } - int modules_size; - config_str modules = yon_file_ls(system_modules_path,&modules_size); - for (int i=0;iOSSoftwareList,&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); + yon_char_parsed_free(base,base_size); + while(gtk_events_pending()) gtk_main_iteration(); + list = gtk_container_get_children(GTK_CONTAINER(widgets->OSSoftwareListBox)); + for(iter = list;iter;iter=iter->next){ + os_row *row = g_object_get_data(iter->data,"kernel_row"); + gtk_widget_set_size_request(row->NameLabel,size,-1); } } @@ -100,17 +154,16 @@ void yon_os_components_init(main_window *widgets){ 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); + for(iter = list;iter;iter=iter->next){ + os_row *row = g_object_get_data(iter->data,"kernel_row"); + char *target = row->name; if (yon_char_parsed_check_exist(parsed,parsed_size,target)>-1){ - gtk_list_store_set(widgets->OSSoftwareList,0,1,-1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1); } else { - gtk_list_store_set(widgets->OSSoftwareList,0,0,-1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1); } } - yon_char_parsed_free(parsed,parsed_size); + yon_char_parsed_free(parsed,parsed_size); } } diff --git a/source/ubinstall-gtk-kernel.c b/source/ubinstall-gtk-kernel.c index 04e0f5a..3b9d3bf 100644 --- a/source/ubinstall-gtk-kernel.c +++ b/source/ubinstall-gtk-kernel.c @@ -85,7 +85,9 @@ void yon_kernel_row_setup_tags(kernel_row *row, char *tags){ tag_type = "tag_blue"; } else if (!strcmp(tag_name,REACTIVE_TAG)){ tag_type = "tag_purple"; - } else continue; + } else{ + tag_type = "tag_green"; + }; yon_tag_add(GTK_BOX(row->TagsBox),tag_name,tag_type,NULL); } } diff --git a/source/ubinstall-gtk-log.c b/source/ubinstall-gtk-log.c index 27c54a5..5de4a71 100644 --- a/source/ubinstall-gtk-log.c +++ b/source/ubinstall-gtk-log.c @@ -65,7 +65,7 @@ void on_process_log_view(GtkWidget *,main_window *widgets){ window->monitor = g_file_monitor_file(file,G_FILE_MONITOR_NONE,NULL,NULL); g_signal_connect(G_OBJECT(window->monitor),"changed",G_CALLBACK(yon_read_log),window); g_object_unref(file); - yon_read_log(NULL,NULL,NULL,NULL,window); + yon_read_log(NULL,NULL,NULL,G_FILE_MONITOR_EVENT_CHANGED,window); } void on_summary_log_view(GtkWidget *,main_window *widgets){ @@ -80,7 +80,7 @@ void on_summary_log_view(GtkWidget *,main_window *widgets){ window->monitor = g_file_monitor_file(file,G_FILE_MONITOR_NONE,NULL,NULL); g_signal_connect(G_OBJECT(window->monitor),"changed",G_CALLBACK(yon_read_log),window); g_object_unref(file); - yon_read_log(NULL,NULL,NULL,NULL,window); + yon_read_log(NULL,NULL,NULL,G_FILE_MONITOR_EVENT_CHANGED,window); } void yon_installation_progress_update(GFileMonitor *,GFile *,GFile *,GFileMonitorEvent ,main_window *widgets) { diff --git a/source/ubinstall-gtk-network.c b/source/ubinstall-gtk-network.c index 5aa2ebb..24a0e8b 100644 --- a/source/ubinstall-gtk-network.c +++ b/source/ubinstall-gtk-network.c @@ -151,8 +151,8 @@ void on_connection_add(GtkWidget *,main_window *widgets){ int yon_network_save(main_window *widgets){ if (gtk_switch_get_active(GTK_SWITCH(widgets->NetworkDomainSwitch))){ const char *domain_name = gtk_entry_get_text(GTK_ENTRY(widgets->NetworkDomainNameEntry)); - if (!yon_char_is_empty(domain_name)){ - yon_ubl_status_box_render(EMPTY_IMPORTANT_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + if (yon_char_is_empty(domain_name)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(widgets->NetworkDomainNameEntry); return 0; } @@ -161,7 +161,7 @@ int yon_network_save(main_window *widgets){ if (!yon_char_is_empty(domain_name)) yon_config_register(DOMAIN_parameter,DOMAIN_parameter_command,(char*)domain_name); else yon_config_remove_by_key(DOMAIN_parameter); if ((!yon_char_is_empty(domain_admin)&&yon_char_is_empty(domain_password))||(yon_char_is_empty(domain_admin)&&!yon_char_is_empty(domain_password))){ - yon_ubl_status_box_render(EMPTY_IMPORTANT_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(widgets->NetworkDomainAdminEntry); yon_ubl_status_highlight_incorrect(widgets->NetworkDomainPasswordEntry); return 0; @@ -170,7 +170,7 @@ int yon_network_save(main_window *widgets){ int size; config_str encrypted_password = yon_config_load(encrypt_domain_password_command(domain_password),&size); if (!size){ - yon_ubl_status_box_render(ENCRYPT_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),ENCRYPT_ERROR_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(widgets->NetworkDomainPasswordEntry); return 0; } @@ -199,7 +199,7 @@ int yon_network_save(main_window *widgets){ case 4: char *value = (char*)gtk_entry_get_text(GTK_ENTRY(widgets->NetworkNTPEntry)); if (yon_char_is_empty(value)) { - yon_ubl_status_box_render(EMPTY_IMPORTANT_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),EMPTY_IMPORTANT_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_highlight_incorrect(widgets->NetworkNTPEntry); return 0; } diff --git a/source/ubinstall-gtk-page-switch.c b/source/ubinstall-gtk-page-switch.c index 7914afc..cdb47bd 100644 --- a/source/ubinstall-gtk-page-switch.c +++ b/source/ubinstall-gtk-page-switch.c @@ -20,10 +20,10 @@ enum YON_PAGES yon_page_get_next(main_window *widgets, enum YON_PAGES page){ case YON_PAGE_STARTUP: return YON_PAGE_BOOTLOADER; break; case YON_PAGE_BOOTLOADER: return YON_PAGE_NETWORK; break; case YON_PAGE_NETWORK: return main_config.configure_mode? YON_PAGE_CONFIGURE_END : YON_PAGE_INSTALLATION; break; - case YON_PAGE_INSTALL_COMMON: return main_config.configure_mode?YON_PAGE_KERNEL:YON_PAGE_INSTALLATION_BEGIN; break; - case YON_PAGE_INSTALL_SEPARATE: return main_config.configure_mode?YON_PAGE_KERNEL:YON_PAGE_INSTALLATION_BEGIN; break; - case YON_PAGE_INSTALL_SAME_PARTITION: return main_config.configure_mode?YON_PAGE_KERNEL:YON_PAGE_INSTALLATION_BEGIN; break; - case YON_PAGE_INSTALL_ADVANCED: return main_config.configure_mode?YON_PAGE_KERNEL:YON_PAGE_INSTALLATION_BEGIN; break; + case YON_PAGE_INSTALL_COMMON: return main_config.configure_mode?YON_PAGE_KERNEL:YON_PAGE_OS_COMPONENTS; break; + case YON_PAGE_INSTALL_SEPARATE: return main_config.configure_mode?YON_PAGE_KERNEL:YON_PAGE_OS_COMPONENTS; break; + case YON_PAGE_INSTALL_SAME_PARTITION: return main_config.configure_mode?YON_PAGE_KERNEL:YON_PAGE_OS_COMPONENTS; break; + case YON_PAGE_INSTALL_ADVANCED: return main_config.configure_mode?YON_PAGE_KERNEL:YON_PAGE_OS_COMPONENTS; break; case YON_PAGE_INSTALL_RECOVERY: return yon_recovery_get_next(widgets); break; case YON_PAGE_RECOVERY_GRUB_INSTALL: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_INSTALLATION_BEGIN; break; case YON_PAGE_RECOVERY_GRUB_UPDATE: return main_config.configure_mode?YON_PAGE_INSTALLATION:YON_PAGE_INSTALLATION_BEGIN; break; @@ -338,6 +338,14 @@ void yon_page_init(main_window *widgets, enum YON_PAGES page){ break; case YON_PAGE_INSTALLATION: main_config.save_configured=1; + g_mutex_lock(&main_config.install_mutex); + if (main_config.install_complete){ + g_mutex_unlock(&main_config.install_mutex); + on_setup_system_configuration(widgets); + on_page_next_clicked(NULL,widgets); + } else { + g_mutex_unlock(&main_config.install_mutex); + } break; default: break; } diff --git a/source/ubinstall-gtk-saving.c b/source/ubinstall-gtk-saving.c index b032a1b..11b49bb 100644 --- a/source/ubinstall-gtk-saving.c +++ b/source/ubinstall-gtk-saving.c @@ -580,9 +580,6 @@ void *on_setup_system_configuration(void * data){ if (widgets){}; int size; config_str all_parameters = yon_config_get_selection_by_key(&size, - user_name_parameter, - user_gecos_parameter, - user_password_parameter, root_password_parameter, autologin_parameter, xkbmodel_parameter, @@ -593,7 +590,49 @@ void *on_setup_system_configuration(void * data){ zone_parameter, lang_parameter, locale_parameter, + SERVICES_ENABLE_parameter, + GRUB_DEFAULT_parameter, + GRUB_TIMEOUT_parameter, + AUTOLOGINUSER_parameter, + GRUB_SUPERUSERS_parameter, + DOMAIN_parameter, + DOMAIN_admanger_parameter, + NTPSERVERS_parameter, + modules_extra_parameter, + KERNEL_BOOT_parameter, + modules_parameter, + packages_parameter, NULL); + int user_size=0; + config_str users = yon_config_get_all_by_key(USERADD_parameter_search,&user_size); + if (user_size){ + int final_size; + config_str final = yon_char_parsed_merge(all_parameters,size,users,user_size,&final_size); + yon_char_parsed_free(users,user_size); + if (size) yon_char_parsed_free(all_parameters,size); + all_parameters = final; + size = final_size; + } + users = yon_config_get_all_by_key(GRUB_PASSWORD_parameter_search,&user_size); + if (users){ + int final_size; + config_str final = yon_char_parsed_merge(all_parameters,size,users,user_size,&final_size); + yon_char_parsed_free(users,user_size); + if (size) yon_char_parsed_free(all_parameters,size); + all_parameters = final; + size = final_size; + } + int network_size; + config_str networks = yon_config_get_all_by_key(NETWORK_parameter_search,&network_size); + if (network_size){ + int final_size; + config_str final = yon_char_parsed_merge(all_parameters,size,networks,network_size,&final_size); + yon_char_parsed_free(networks,network_size); + if (size) yon_char_parsed_free(all_parameters,size); + all_parameters = final; + size = final_size; + } + if (all_parameters){ char *parameter_string = yon_char_parsed_to_string(all_parameters,size," "); char *command = set_user_config_command(parameter_string); diff --git a/source/ubinstall-gtk-startup-services.c b/source/ubinstall-gtk-startup-services.c index 92005b4..aaa0fbd 100644 --- a/source/ubinstall-gtk-startup-services.c +++ b/source/ubinstall-gtk-startup-services.c @@ -144,7 +144,7 @@ int yon_startup_save(main_window *widgets){ list_size++; char *target; int status; - gtk_tree_model_get(model,&iter,0,&status,1,&target,-1); + gtk_tree_model_get(model,&iter,0,&status,2,&target,-1); if (status){ yon_char_parsed_add_or_create_if_exists(modules,&size,target); } diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 4088503..046599c 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -6,14 +6,6 @@ int cur_slide=0; // //functions -void on_os_components_toggled(GtkWidget*, char *path, main_window *widgets){ - GtkTreeIter iter; - int status; - gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->OSSoftwareList),&iter,path); - gtk_tree_model_get(GTK_TREE_MODEL(widgets->OSSoftwareList),&iter,0,&status,-1); - gtk_list_store_set(widgets->OSSoftwareList,&iter,0,!status,-1); -} - void on_pacman_software_all_toggled(GtkWidget *, char *path, main_window *widgets){ GtkTreeIter iter; char *name, *type, *description; @@ -485,9 +477,11 @@ main_window *yon_main_window_complete(){ widgets->KernelAddonModulesLabel = yon_gtk_builder_get_widget(builder,"KernelAddonModulesLabel"); widgets->KernelAddonDescriptionLabel = yon_gtk_builder_get_widget(builder,"KernelAddonDescriptionLabel"); - widgets->OSSoftwareTree = yon_gtk_builder_get_widget(builder,"OSSoftwareTree"); - widgets->OSSoftwareList = GTK_LIST_STORE(gtk_builder_get_object(builder,"OSSoftwareList")); - widgets->OSSoftwareCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"OSSoftwareCell")); + widgets->OSSoftwareListBox = yon_gtk_builder_get_widget(builder,"OSSoftwareListBox"); + widgets->OSSoftwareInstallLabel = yon_gtk_builder_get_widget(builder,"OSSoftwareInstallLabel"); + widgets->OSSoftwareNameLabel = yon_gtk_builder_get_widget(builder,"OSSoftwareNameLabel"); + widgets->OSSoftwareTagsLabel = yon_gtk_builder_get_widget(builder,"OSSoftwareTagsLabel"); + widgets->OSSoftwareDescriptionLabel = yon_gtk_builder_get_widget(builder,"OSSoftwareDescriptionLabel"); widgets->PacmanSoftwareSearchEntry = yon_gtk_builder_get_widget(builder,"PacmanSoftwareSearchEntry"); widgets->PacmanSoftwareStatusImage = yon_gtk_builder_get_widget(builder,"PacmanSoftwareStatusImage"); @@ -607,7 +601,6 @@ main_window *yon_main_window_complete(){ yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->NextInstallationFormatRevealer),GTK_SWITCH(widgets->NextInstallationFormatSwitch)); yon_gtk_revealer_set_from_switch(GTK_REVEALER(widgets->SameInstallationFormatRevealer),GTK_SWITCH(widgets->SameInstallationFormatSwitch)); - g_signal_connect(G_OBJECT(widgets->OSSoftwareCell),"toggled",G_CALLBACK(on_os_components_toggled),widgets); g_signal_connect(G_OBJECT(widgets->PacmanSoftwareAllCell),"toggled",G_CALLBACK(on_pacman_software_all_toggled),widgets); g_signal_connect(G_OBJECT(widgets->PacmanSoftwareChosenCell),"toggled",G_CALLBACK(on_pacman_software_chosen_toggled),widgets); g_signal_connect(G_OBJECT(widgets->PacmanSoftwareSearchEntry),"icon-press",G_CALLBACK(on_pacman_icon_press),widgets); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 344da05..92bb622 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -30,6 +30,7 @@ #define glade_path_menu_window "/com/ublinux/ui/ubinstall-gtk-menu.glade" #define glade_path_menu_item "/com/ublinux/ui/ubinstall-gtk-menu-item.glade" #define glade_path_kernel_row "/com/ublinux/ui/ubinstall-gtk-kernel-row.glade" +#define glade_path_os_row "/com/ublinux/ui/ubinstall-gtk-os-row.glade" #define glade_path_service "/com/ublinux/ui/ubinstall-gtk-service-window.glade" #define glade_path_bootloader_user "/com/ublinux/ui/ubinstall-gtk-bootloader-user.glade" #define glade_path_advanced_part "/com/ublinux/ui/ubinstall-gtk-advanced-box.glade" @@ -78,6 +79,8 @@ "/com/ublinux/images/slide-12.png", \ NULL +#define get_modules_command "pacman --color never -Ss ^ubm- | sed -Enr -e 'N;s/\\n/ ;/' -e \"s/^([^\\/]+)\\/([^[:blank:]]+)[[:blank:]]+([^[:blank:]]+)[[:blank:]]+(\\(([^\\)]+)\\)[^\\;]+|[^\\;]*);[[:blank:]]*(.*)/\\2;\\3;\\5;\\6/p\"" + #define get_local_module_info_command(target) yon_char_unite("pacman --color never -Sp $(pacman -Ssq '",target,"') --print-format '%n;%v;%d' | grep -v \"^::\"",NULL); #define get_menus_entry_command "/usr/lib/ublinux/scripts/grub-functions exec_get_all_menuentry" @@ -132,32 +135,32 @@ layout && /description:/ {\ #define modules_extra_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[modules_extra]" /*------------------------------------------------------------*/ -#define user_name_parameter "AUTOINSTALL[user_name]" -#define user_name_parameter_command "ubconfig --source global --conarg get [autoinstall] AUTOINSTALL[user_name]" -#define user_gecos_parameter "AUTOINSTALL[user_gecos]" -#define user_gecos_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[user_gecos]" -#define user_password_parameter "AUTOINSTALL[user_password]" -#define user_password_parameter_command "ubconfig --source global --conarg get [autoinstall] AUTOINSTALL[user_password]" -#define root_password_parameter "AUTOINSTALL[root_password]" -#define root_password_parameter_command "ubconfig --source global --conarg get [autoinstall] AUTOINSTALL[root_password]" -#define autologin_parameter "AUTOINSTALL[autologin]" -#define autologin_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[autologin]" -#define xkbmodel_parameter "AUTOINSTALL[xkbmodel]" -#define xkbmodel_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[xkbmodel]" -#define xkblayout_parameter "AUTOINSTALL[xkblayout]" -#define xkblayout_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[xkblayout]" -#define xkbvariant_parameter "AUTOINSTALL[xkbvariant]" -#define xkbvariant_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[xkbvariant]" -#define xkboptions_parameter "AUTOINSTALL[xkboptions]" -#define xkboptions_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[xkboptions]" -#define hostname_parameter "AUTOINSTALL[hostname]" -#define hostname_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[hostname]" -#define zone_parameter "AUTOINSTALL[zone]" -#define zone_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[zone]" -#define lang_parameter "AUTOINSTALL[lang]" -#define lang_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[lang]" -#define locale_parameter "AUTOINSTALL[locale]" -#define locale_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[locale]" +// #define user_name_parameter "AUTOINSTALL[user_name]" +// #define user_name_parameter_command "ubconfig --source global --conarg get [autoinstall] AUTOINSTALL[user_name]" +// #define user_gecos_parameter "AUTOINSTALL[user_gecos]" +// #define user_gecos_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL[user_gecos]" +// #define user_password_parameter "AUTOINSTALL[user_password]" +// #define user_password_parameter_command "ubconfig --source global --conarg get [autoinstall] AUTOINSTALL[user_password]" +#define root_password_parameter "AUTOINSTALL['ubconfig set [users] DEFAULTROOTPASSWD']" +#define root_password_parameter_command "ubconfig --source global --conarg get [autoinstall] AUTOINSTALL['ubconfig set [users] DEFAULTROOTPASSWD']" +#define autologin_parameter "AUTOINSTALL['ubconfig set [desktop] AUTOLOGINUSER']" +#define autologin_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [desktop] AUTOLOGINUSER']" +#define xkbmodel_parameter "AUTOINSTALL['ubconfig set [keyboard] XKBMODEL']" +#define xkbmodel_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [keyboard] XKBMODEL']" +#define xkblayout_parameter "AUTOINSTALL['ubconfig set [keyboard] XKBLAYOUT']" +#define xkblayout_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [keyboard] XKBLAYOUT']" +#define xkbvariant_parameter "AUTOINSTALL['ubconfig set [keyboard] XKBVARIANT']" +#define xkbvariant_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [keyboard] XKBVARIANT']" +#define xkboptions_parameter "AUTOINSTALL['ubconfig set [keyboard] XKBOPTIONS']" +#define xkboptions_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [keyboard] XKBOPTIONS']" +#define hostname_parameter "AUTOINSTALL['ubconfig set [system] HOSTNAME']" +#define hostname_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [system] HOSTNAME']" +#define zone_parameter "AUTOINSTALL['ubconfig set [clock] ZONE']" +#define zone_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [clock] ZONE']" +#define lang_parameter "AUTOINSTALL['ubconfig set [locale] LANG']" +#define lang_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [locale] LANG']" +#define locale_parameter "AUTOINSTALL['ubconfig set [locale] LOCALE']" +#define locale_parameter_command "ubconfig --source global get [autoinstall] AUTOINSTALL['ubconfig set [locale] LOCALE']" /*------------------------------------------------------------*/ #define part_size_parameter "AUTOINSTALL[part_size]" @@ -587,9 +590,11 @@ typedef struct { GtkWidget *KernelAddonModulesLabel; GtkWidget *KernelAddonDescriptionLabel; - GtkWidget *OSSoftwareTree; - GtkListStore *OSSoftwareList; - GtkCellRenderer *OSSoftwareCell; + GtkWidget *OSSoftwareListBox; + GtkWidget *OSSoftwareInstallLabel; + GtkWidget *OSSoftwareNameLabel; + GtkWidget *OSSoftwareTagsLabel; + GtkWidget *OSSoftwareDescriptionLabel; GtkWidget *PacmanSoftwareSearchEntry; GtkWidget *PacmanSoftwareStatusImage; @@ -812,10 +817,10 @@ typedef struct { typedef struct { GtkWidget *row; GtkWidget *RowBox; + GtkWidget *TagsBox; GtkWidget *InstallCheck; GtkWidget *EnableRadio; GtkWidget *EnableSeparator; - GtkWidget *TagsBox; GtkWidget *TagsSeparator; GtkWidget *NameLabel; GtkWidget *DescriptionLabel; @@ -826,6 +831,20 @@ typedef struct { char *package; } kernel_row; +typedef struct { + GtkWidget *row; + GtkWidget *RowBox; + GtkWidget *TagsBox; + GtkWidget *InstallCheck; + GtkWidget *NameLabel; + GtkWidget *VersionLabel; + GtkWidget *DescriptionLabel; + + char *name; + char *modules; + char *version; +} os_row; + typedef struct { GtkWidget *Window; GtkWidget *StatusBox; @@ -1000,7 +1019,6 @@ void on_startup_add_accept(GtkWidget *, main_window *widgets); void yon_startup_services_setup(main_window *widgets); void on_startup_services_remove(GtkWidget *self,main_window *widgets); void on_startup_services_selection_changed(GtkWidget *,main_window *widgets); -void on_os_components_toggled(GtkWidget*, char *path, main_window *widgets); void on_pacman_software_all_toggled(GtkWidget *, char *path, main_window *widgets); void on_pacman_software_chosen_toggled(GtkWidget *, char *path, main_window *widgets); int yon_pacman_software_save(main_window *widgets); @@ -1040,4 +1058,6 @@ void yon_advanced_set_device_sensitivity(main_window *widgets, gboolean state); void on_advanced_parts_removed(GtkWidget *,GtkWidget*,main_window *widgets); void on_advanced_parts_added(GtkWidget *,GtkWidget*,main_window *widgets); void yon_advanced_partition_clear(main_window *widgets); -void yon_layout_build(char *key, GHashTable *value, main_window *widgets); \ No newline at end of file +void yon_layout_build(char *key, GHashTable *value, main_window *widgets); +void yon_os_row_setup(os_row *row, char *name, char *version,char *tags, char *description); +os_row *yon_os_row_new(); \ No newline at end of file diff --git a/ubinstall-gtk-kernel-row.glade b/ubinstall-gtk-kernel-row.glade index b41c8db..7a5bd27 100644 --- a/ubinstall-gtk-kernel-row.glade +++ b/ubinstall-gtk-kernel-row.glade @@ -1,5 +1,5 @@ - + diff --git a/ubinstall-gtk-os-row.glade b/ubinstall-gtk-os-row.glade new file mode 100644 index 0000000..6bde8c2 --- /dev/null +++ b/ubinstall-gtk-os-row.glade @@ -0,0 +1,135 @@ + + + + + + + True + False + 11 + + + True + True + False + True + + + False + True + 0 + + + + + True + False + 1 + vertical + 1 + + + True + False + 7 + + + True + False + Name + 0 + False + 0 + + + + + + False + True + 0 + + + + + True + False + Version + True + 15 + False + 0 + + + False + True + 1 + + + + + True + False + start + 3 + 5 + 2 + + + + + + False + True + 6 + + + + + + False + True + 0 + + + + + True + False + 2 + Description + 0 + 0 + + + True + True + end + 1 + + + + + True + False + + + False + True + 2 + + + + + True + True + 1 + + + + + diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 796b36b..4355f51 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -731,6 +731,7 @@ agreement 5 5 left + False True @@ -1405,55 +1406,31 @@ and help you install UBLinux on your computer True in - + True - True - OSSoftwareList - 0 - both - - - - - - - - - 0 - - - - - - - Module name - - - - 1 - - - - - - - Type - - - - 2 - - - - + False + 5 + 5 + 5 + 5 + 5 + 5 - - Description + + True + False + vertical - - - 3 - + + True + False + none + + + True + True + 1 +