From 1752f7dc465d61a0676e605ad8a1d5d840a25d36 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 18 Dec 2025 18:28:01 +0000 Subject: [PATCH] Additional components slide loading fix; Configuration menu parameters saving --- source/ubinstall-gtk-bootloader.c | 16 - source/ubinstall-gtk-components.c | 136 +-- source/ubinstall-gtk-config-hub.c | 96 ++- source/ubinstall-gtk-grub.c | 22 - source/ubinstall-gtk-network.c | 16 - source/ubinstall-gtk-packages.c | 25 +- source/ubinstall-gtk-page-switch.c | 45 +- source/ubinstall-gtk-region.c | 11 - source/ubinstall-gtk-startup-services.c | 11 - source/ubinstall-gtk-users.c | 16 - source/ubinstall-gtk.c | 14 +- source/ubinstall-gtk.h | 18 +- ubinstall-gtk-slider.glade | 34 + ubinstall-gtk.glade | 1043 ++++++++--------------- 14 files changed, 604 insertions(+), 899 deletions(-) create mode 100644 ubinstall-gtk-slider.glade diff --git a/source/ubinstall-gtk-bootloader.c b/source/ubinstall-gtk-bootloader.c index 1dc3111..4456896 100644 --- a/source/ubinstall-gtk-bootloader.c +++ b/source/ubinstall-gtk-bootloader.c @@ -42,22 +42,6 @@ int yon_bootloader_save(main_window *widgets){ yon_config_remove_by_key(GRUB_SUPERUSERS_parameter); } - if (!main_config.configure_mode){ - int size, users_size, final_size, save_size; - config_str grub_users = yon_config_find_keys(GRUB_PASSWORD_parameter_search,&users_size); - config_str save_parameters = yon_char_parsed_new(&size,GRUB_TIMEOUT_parameter,GRUB_DEFAULT_parameter,AUTOLOGINUSER_parameter,GRUB_SUPERUSERS_parameter,NULL); - config_str final = yon_char_parsed_merge(save_parameters,size,grub_users,users_size,&final_size); - config_str parameters = yon_config_get_save_parameters_by_list(&save_size,final,final_size); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,save_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,save_size); - } - if (grub_users) yon_char_parsed_free(grub_users,users_size); - if (save_parameters) yon_char_parsed_free(save_parameters,size); - } yon_bootloader_interface_update(widgets); return 1; diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index 1af6ded..4781405 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -3,14 +3,17 @@ int yon_kernel_save(main_window *widgets){ GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelListBox)); - char *install_modules = ""; + char *config_val = config(modules_extra_parameter); + if (yon_char_is_empty(config_val)) yon_config_register(modules_extra_parameter,modules_extra_parameter_command,""); 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))){ - 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; + yon_config_append_element(modules_extra_parameter,row->package,","); + active_size++; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->EnableRadio))){ enabled_module = row->package; } @@ -18,28 +21,12 @@ int yon_kernel_save(main_window *widgets){ } if (yon_char_is_empty(enabled_module)){ - yon_ubl_status_box_spawn(GTK_CONTAINER(widgets->StatusBox),ENABLED_KERNEL_MISSING_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); - return 0; - } - - if (!yon_char_is_empty(install_modules)){ - yon_config_register(modules_extra_parameter,modules_extra_parameter_command,install_modules); + yon_config_register(KERNEL_BOOT_parameter,KERNEL_BOOT_parameter_command,enabled_module); } else { - yon_config_remove_by_key(modules_extra_parameter); - } - yon_config_register(KERNEL_BOOT_parameter,KERNEL_BOOT_parameter_command,enabled_module); - if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,modules_extra_parameter,KERNEL_BOOT_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); - } + yon_config_remove_by_key(KERNEL_BOOT_parameter); } + return 1; } @@ -61,17 +48,6 @@ int yon_kernel_addon_save(main_window *widgets){ yon_config_register(modules_extra_parameter,modules_extra_parameter_command,install_modules); free(install_modules); } - if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,modules_extra_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); - } - } return 1; } @@ -99,17 +75,6 @@ int yon_os_components_save(main_window *widgets){ } else { yon_config_remove_by_key(modules_parameter); } - if (!main_config.configure_mode){ - int parameters_size; - config_str parameters = yon_config_get_save_parameters_by_key(¶meters_size,modules_parameter,NULL); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,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,parameters_size); - } - } return 1; } @@ -126,8 +91,6 @@ os_row *yon_os_row_new(){ 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); @@ -235,43 +198,45 @@ void yon_os_components_init(main_window *widgets){ } } -int yon_software_save(main_window *){ - // 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); - // } - // if (!main_config.configure_mode){ - // int size; - // config_str parameters = yon_config_get_save_parameters_by_key(&size,modules_extra_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); - // } - // } +int yon_software_save(main_window *widgets){ + GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdditionalComponentsList)); + GList *iter; + char *config_val = config(modules_extra_parameter); + for(iter = list;iter;iter=iter->next){ + os_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){ + if (!yon_char_check_element(config_val,target,",")){ + yon_config_append_element(modules_extra_parameter,target,","); + } + } + } + g_list_free(list); return 1; } +gboolean yon_software_insert(struct row_data *row_input){ + os_row *row = yon_os_row_new(); + + main_window *widgets = row_input->widgets; + gtk_list_box_insert(GTK_LIST_BOX(widgets->AdditionalComponentsList),row->row,-1); + yon_os_row_setup(row,row_input->name,row_input->version,row_input->tags,row_input->description); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0); + return G_SOURCE_REMOVE; +} + void yon_software_init(main_window *widgets){ + + 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"); + free(row); + gtk_widget_destroy(GTK_WIDGET(iter->data)); + } int base_size; - config_str base = yon_config_load(get_modules_command,&base_size); + config_str base = yon_config_load(get_available_modules_command,&base_size); for (int i=0;itags = yon_char_replace(parsed[2]," ",", "); row->description = parsed[3]; row->widgets=widgets; - g_idle_add((GSourceFunc)yon_os_component_insert,row); + g_idle_add((GSourceFunc)yon_software_insert,row); } g_idle_add((GSourceFunc)yon_spinner_switch_off,widgets->OSSpinner); yon_char_parsed_free(base,base_size); @@ -306,17 +271,6 @@ int yon_pacman_software_save(main_window *widgets){ } else { yon_config_remove_by_key(packages_parameter); } - 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); - } - } return 1; } diff --git a/source/ubinstall-gtk-config-hub.c b/source/ubinstall-gtk-config-hub.c index 22b322a..5830fc3 100644 --- a/source/ubinstall-gtk-config-hub.c +++ b/source/ubinstall-gtk-config-hub.c @@ -1,5 +1,70 @@ #include "ubinstall-gtk.h" +int yon_configuration_hub_save(main_window *){ + + if (!main_config.configure_mode){ + int size; + config_str parameters = yon_config_get_save_parameters_by_key(&size,modules_parameter, + modules_extra_parameter, + root_password_parameter, + autologin_parameter, + xkbmodel_parameter, + xkblayout_parameter, + xkbvariant_parameter, + xkboptions_parameter, + hostname_parameter, + zone_parameter, + lang_parameter, + locale_parameter, + num_lock_boot_parameter, + swap_parameter, + swap_size_parameter, + boot_parameter, + packages_parameter, + device_typevfs_parameter, + NTPSERVERS_parameter, + DOMAIN_parameter, + DOMAIN_admanger_parameter, + KERNEL_BOOT_parameter, + SERVICES_ENABLE_parameter, + GRUB_SUPERUSERS_parameter, + GRUB_TIMEOUT_parameter, + GRUB_DEFAULT_parameter, + AUTOLOGINUSER_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); + } + + int users_size, save_size; + config_str users = yon_config_find_keys(NETWORK_parameter_search,&users_size); + parameters = yon_config_get_save_parameters_by_list(&save_size,users,users_size); + if (parameters){ + char *command_parameters = yon_char_parsed_to_string(parameters,save_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,save_size); + } + if (users)yon_char_parsed_free(users,users_size); + + users = yon_config_find_keys(USERADD_parameter_search,&users_size); + parameters = yon_config_get_save_parameters_by_list(&save_size,users,users_size); + 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,save_size); + } + if (users)yon_char_parsed_free(users,users_size); + } + return 1; +} void on_configuration_hub_selected(GtkWidget* self, main_window *widgets){ GList *list = NULL; @@ -78,18 +143,22 @@ void yon_configuration_hub_add(GtkFlowBox *target, char *name, char *icon, enum GtkIconInfo *info = gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(),icon,54,1,GTK_ICON_LOOKUP_FORCE_SIZE); char *name_wrapped = yon_char_wrap_to_length_str(name,10); - cur_icon->MainBox = gtk_box_new(GTK_ORIENTATION_VERTICAL,5); + cur_icon->MainBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); cur_icon->Label = gtk_label_new(name_wrapped); cur_icon->Image = gtk_image_new_from_pixbuf(gtk_icon_info_load_icon(info,NULL)); cur_icon->page = page; GtkWidget *flow = gtk_flow_box_child_new(); + gtk_style_context_add_class(gtk_widget_get_style_context(flow),"bggrey"); - // gtk_label_set_line_wrap(GTK_LABEL(cur_icon->Label),1); - // gtk_label_set_line_wrap_mode(GTK_LABEL(cur_icon->Label),PANGO_WRAP_WORD); + gtk_label_set_xalign(GTK_LABEL(cur_icon->Label),0); g_object_set_data(G_OBJECT(flow),"config_hub_icon",cur_icon); gtk_container_add(GTK_CONTAINER(flow),cur_icon->MainBox); gtk_box_pack_start(GTK_BOX(cur_icon->MainBox),cur_icon->Image,0,0,0); gtk_box_pack_start(GTK_BOX(cur_icon->MainBox),cur_icon->Label,0,0,0); + gtk_widget_set_margin_bottom(cur_icon->MainBox,5); + gtk_widget_set_margin_top(cur_icon->MainBox,5); + gtk_widget_set_margin_start(cur_icon->MainBox,5); + gtk_widget_set_margin_end(cur_icon->MainBox,5); gtk_flow_box_insert(target,flow,-1); gtk_widget_show_all(flow); free(name_wrapped); @@ -110,15 +179,16 @@ void yon_configuration_hub_init(main_window *widgets){ yon_flow_box_clear(GTK_FLOW_BOX(widgets->HubPackagesListBox)); yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPackagesListBox),KERNEL_LABEL,kernel_icon_path,YON_PAGE_KERNEL); yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPackagesListBox),KERNEL_ADDON_LABEL,kernel_icon_path,YON_PAGE_KERNEL_ADDON); - yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPackagesListBox),SOFTWARE_LABEL,icon_path,YON_PAGE_SOFTWARE); - yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPackagesListBox),PACMAN_SOFTWARE_LABEL,icon_path,YON_PAGE_PACMAN_SOFTWARE); - yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPackagesListBox),KERNEL_ADDON_LABEL,icon_path,YON_PAGE_KERNEL_ADDON); - yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPersonalListBox),REGION_ICON_LABEL,icon_path,YON_PAGE_REGION); - yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPersonalListBox),LOCALE_LANGUAGE_LABEL,icon_path,YON_PAGE_LANGUAGE); - yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPersonalListBox),KEYBOARD_TAB_LABEL,icon_path,YON_PAGE_KEYBOARD); - yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubSystemListBox),USERS_TAB_LABEL,icon_path,YON_PAGE_USERS); - yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubSystemListBox),STARTUP_LABEL,icon_path,YON_PAGE_STARTUP); - yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubSystemListBox),BOOTLOADER_LABEL,icon_path,YON_PAGE_BOOTLOADER); - yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubSystemListBox),NETWORK_LABEL,network_icon_path,YON_PAGE_NETWORK); + yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPackagesListBox),SOFTWARE_LABEL,"com.ublinux.ubl-settings-update",YON_PAGE_SOFTWARE); + yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPackagesListBox),PACMAN_SOFTWARE_LABEL,"com.ublinux.ubl-settings-repomanager",YON_PAGE_PACMAN_SOFTWARE); + yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPackagesListBox),PACKAGES_SECTION_LABEL,"com.ublinux.ubl-settings-repomanager",YON_PAGE_PACKAGES); + // yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPackagesListBox),KERNEL_ADDON_LABEL,icon_path,YON_PAGE_KERNEL_ADDON); + yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPersonalListBox),REGION_ICON_LABEL,"com.ublinux.ubl-settings-system",YON_PAGE_REGION); + yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPersonalListBox),LOCALE_LANGUAGE_LABEL,"com.ublinux.ubl-settings-system",YON_PAGE_LANGUAGE); + yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubPersonalListBox),KEYBOARD_TAB_LABEL,"com.ublinux.ubl-settings-keyboard",YON_PAGE_KEYBOARD); + yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubSystemListBox),USERS_TAB_LABEL,"com.ublinux.ubl-settings-usergroups",YON_PAGE_USERS); + yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubSystemListBox),STARTUP_LABEL,"com.ublinux.ubl-settings-info",YON_PAGE_STARTUP); + yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubSystemListBox),BOOTLOADER_LABEL,"com.ublinux.ubl-settings-bootloader",YON_PAGE_BOOTLOADER); + yon_configuration_hub_add(GTK_FLOW_BOX(widgets->HubSystemListBox),NETWORK_LABEL,"com.ublinux.ubl-settings-multiseat",YON_PAGE_NETWORK); yon_configuration_hub_resize(widgets); } \ No newline at end of file diff --git a/source/ubinstall-gtk-grub.c b/source/ubinstall-gtk-grub.c index 4b70364..0137b2e 100644 --- a/source/ubinstall-gtk-grub.c +++ b/source/ubinstall-gtk-grub.c @@ -20,17 +20,6 @@ int yon_grub_install_save(main_window *widgets){ yon_config_register(AUTOINSTALL_DEVICE,AUTOINSTALL_DEVICE_command,cur_device); yon_config_register(part_parameter,part_parameter_command,partition); yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_TYPE_INSTALL_command,"grub_install"); - if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,AUTOINSTALL_DEVICE,part_parameter,AUTOINSTALL_TYPE_INSTALL,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); - } - } return 1; } @@ -54,16 +43,5 @@ int yon_grub_update_save(main_window *widgets){ yon_config_register(AUTOINSTALL_DEVICE,AUTOINSTALL_DEVICE_command,cur_device); yon_config_register(part_parameter,part_parameter_command,partition); yon_config_register(AUTOINSTALL_TYPE_INSTALL,AUTOINSTALL_TYPE_INSTALL_command,"grub_update"); - if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,AUTOINSTALL_DEVICE,part_parameter,AUTOINSTALL_TYPE_INSTALL,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); - } - } return 1; } \ No newline at end of file diff --git a/source/ubinstall-gtk-network.c b/source/ubinstall-gtk-network.c index 81f85f8..e57eeda 100644 --- a/source/ubinstall-gtk-network.c +++ b/source/ubinstall-gtk-network.c @@ -282,22 +282,6 @@ int yon_network_save(main_window *widgets){ } } - if (!main_config.configure_mode){ - int size, users_size, final_size, save_size; - config_str users = yon_config_find_keys(NETWORK_parameter_search,&users_size); - config_str save_parameters = yon_char_parsed_new(&size,DOMAIN_parameter,DOMAIN_admanger_parameter,NTPSERVERS_parameter,hostname_parameter,NULL); - config_str final = yon_char_parsed_merge(save_parameters,size,users,users_size,&final_size); - config_str parameters = yon_config_get_save_parameters_by_list(&save_size,final,final_size); - if (parameters){ - char *command_parameters = yon_char_parsed_to_string(parameters,save_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,save_size); - } - if (users)yon_char_parsed_free(users,users_size); - if (save_parameters)yon_char_parsed_free(save_parameters,size); - } return 1; } diff --git a/source/ubinstall-gtk-packages.c b/source/ubinstall-gtk-packages.c index 375dcb7..16f81f5 100644 --- a/source/ubinstall-gtk-packages.c +++ b/source/ubinstall-gtk-packages.c @@ -1,5 +1,28 @@ #include "ubinstall-gtk.h" +int yon_packages_tab_save(main_window *widgets){ + GtkTreeIter parentiter, subiter,packiter; + if (yon_char_is_empty(config(modules_extra_parameter))){ + yon_config_register(modules_extra_parameter,modules_extra_parameter_command,NULL); + } + for_iter(widgets->PackagesList,&parentiter){ + for (int valid2 = gtk_tree_model_iter_children(GTK_TREE_MODEL(widgets->PackagesList),&subiter,&parentiter);valid2;valid2 = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->PackagesList),&subiter)){ + int selectable, status; + char *package; + gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&subiter,0,&status,1,&package,3,&selectable,-1); + if (selectable&&status){ + yon_config_append_element(modules_extra_parameter,package,","); + } else { + for (int valid3 = gtk_tree_model_iter_children(GTK_TREE_MODEL(widgets->PackagesList),&packiter,&subiter);valid3;valid3 = gtk_tree_model_iter_next(GTK_TREE_MODEL(widgets->PackagesList),&packiter)){ + gtk_tree_model_get(GTK_TREE_MODEL(widgets->PackagesList),&packiter,0,&status,1,&package,3,&selectable,-1); + yon_config_append_element(modules_extra_parameter,package,","); + } + } + } + } + return 1; +} + GtkTreeIter *yon_category_check(GtkTreeStore *target,char *category); GtkTreeIter *yon_category_check(GtkTreeStore *target,char *category){ GtkTreeIter iter; @@ -30,8 +53,6 @@ GtkTreeIter *yon_subcategory_check(GtkTreeStore *target, GtkTreeIter *parent_ite } void yon_packages_tab_init(main_window *widgets){ - // GHashTable *category = g_hash_table_new(g_str_hash,g_str_equal); - // GHashTable *subcategory = g_hash_table_new(g_str_hash,g_str_equal); int size; config_str packages = yon_resource_open_file(groups_list_path,&size); for (int i=1;iCancelInstallButton,0); gtk_widget_hide(widgets->BackButton); gtk_widget_hide(widgets->SourceButton); - gtk_widget_hide(widgets->SkipInstallationButton); gtk_widget_show(widgets->NextButton); if (!yon_char_is_empty(config(AUTOINSTALL_TYPE_INSTALL))){ gtk_widget_show(widgets->StartScenarioButton); @@ -121,7 +120,6 @@ void yon_navigation_buttons_set_sensetiveness(main_window *widgets){ case YON_PAGE_INSTALLATION: gtk_widget_set_sensitive(widgets->NextButton,0); gtk_widget_set_sensitive(widgets->BackButton,0); - gtk_widget_hide(widgets->SkipInstallationButton); break; case YON_PAGE_CONFIGURE_END: gtk_button_set_label(GTK_BUTTON(widgets->NextButton),SAVE_AND_EXIT_LABEL); @@ -147,23 +145,38 @@ void yon_navigation_buttons_set_sensetiveness(main_window *widgets){ } switch(page){ case YON_PAGE_KERNEL: + case YON_PAGE_SOFTWARE: case YON_PAGE_KERNEL_ADDON: case YON_PAGE_PACMAN_SOFTWARE: case YON_PAGE_REGION: case YON_PAGE_KEYBOARD: case YON_PAGE_USERS: case YON_PAGE_STARTUP: + case YON_PAGE_LANGUAGE: case YON_PAGE_BOOTLOADER: - case YON_PAGE_NETWORK: - gtk_widget_show(widgets->SkipInstallationButton); - break; - default: - gtk_widget_hide(widgets->SkipInstallationButton); + case YON_PAGE_PACKAGES: + case YON_PAGE_NETWORK:{ + gtk_widget_show(widgets->NextButton); + gtk_widget_hide(widgets->BackButton); + gtk_button_set_label(GTK_BUTTON(widgets->NextButton),BACK_LABEL); + GtkWidget *image = gtk_button_get_image(GTK_BUTTON(widgets->NextButton)); + gtk_image_set_from_icon_name(GTK_IMAGE(image),arrow_left_icon_path,GTK_ICON_SIZE_BUTTON); + } break; + case YON_PAGE_CONFIG_HUB:{ + gtk_widget_show(widgets->NextButton); + gtk_widget_show(widgets->BackButton); + gtk_button_set_label(GTK_BUTTON(widgets->NextButton),NEXT_LABEL); + GtkWidget *image = gtk_button_get_image(GTK_BUTTON(widgets->NextButton)); + gtk_image_set_from_icon_name(GTK_IMAGE(image),arrow_right_icon_path,GTK_ICON_SIZE_BUTTON); + } break; + default: break; } } int yon_page_save(main_window *widgets, enum YON_PAGES page){ switch (page){ + case YON_PAGE_CONFIG_HUB: + return yon_configuration_hub_save(widgets); case YON_PAGE_OS_COMPONENTS: return yon_os_components_save(widgets); break; @@ -200,6 +213,9 @@ int yon_page_save(main_window *widgets, enum YON_PAGES page){ case YON_PAGE_NETWORK: return yon_network_save(widgets); break; + case YON_PAGE_PACKAGES: + return yon_packages_tab_save(widgets); + break; case YON_PAGE_INSTALL_COMMON: return yon_install_common_save(widgets); break; @@ -275,7 +291,7 @@ void yon_switch_page_render(main_window *widgets){ case YON_PAGE_BOOTLOADER: case YON_PAGE_STARTUP: case YON_PAGE_NETWORK: - case YON_PAGE_PACKAGES_HUB: + case YON_PAGE_PACKAGES: page = 6; break; case YON_PAGE_INSTALLATION: @@ -388,7 +404,7 @@ void yon_page_init(main_window *widgets, enum YON_PAGES page){ case YON_PAGE_NETWORK: yon_network_init(widgets); break; - case YON_PAGE_PACKAGES_HUB: + case YON_PAGE_PACKAGES: yon_packages_tab_init(widgets); break; case YON_PAGE_INSTALL_ADVANCED: @@ -441,7 +457,6 @@ void on_page_prev_clicked(GtkWidget *, main_window *widgets){ void on_page_cancel_clicked(GtkWidget *, main_window *widgets){ gtk_widget_hide(widgets->BackButton); gtk_widget_hide(widgets->SourceButton); - gtk_widget_hide(widgets->SkipInstallationButton); gtk_widget_show(widgets->NextButton); gtk_widget_show(widgets->StartScenarioButton); gtk_widget_set_sensitive(widgets->CancelInstallButton,0); diff --git a/source/ubinstall-gtk-region.c b/source/ubinstall-gtk-region.c index 22a8af0..8b2df71 100644 --- a/source/ubinstall-gtk-region.c +++ b/source/ubinstall-gtk-region.c @@ -39,17 +39,6 @@ int yon_region_save(main_window *widgets){ } else { yon_config_remove_by_key(zone_parameter); } - if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,locale_parameter,lang_parameter,zone_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); - } - } return 1; } diff --git a/source/ubinstall-gtk-startup-services.c b/source/ubinstall-gtk-startup-services.c index 45bb8db..2c5ee87 100644 --- a/source/ubinstall-gtk-startup-services.c +++ b/source/ubinstall-gtk-startup-services.c @@ -210,16 +210,5 @@ int yon_startup_save(main_window *widgets){ } else { yon_config_remove_by_key(SERVICES_ENABLE_parameter); } - if (!main_config.configure_mode){ - int size; - config_str parameters = yon_config_get_save_parameters_by_key(&size,SERVICES_ENABLE_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); - } - } return 1; } \ No newline at end of file diff --git a/source/ubinstall-gtk-users.c b/source/ubinstall-gtk-users.c index 18db20c..e399ded 100644 --- a/source/ubinstall-gtk-users.c +++ b/source/ubinstall-gtk-users.c @@ -32,22 +32,6 @@ int yon_users_save(main_window *widgets){ } } - if (!main_config.configure_mode){ - int size, users_size, final_size, save_size; - config_str users = yon_config_find_keys(USERADD_parameter_search,&users_size); - config_str save_parameters = yon_char_parsed_new(&size,root_password_parameter,autologin_parameter,NULL); - config_str final = yon_char_parsed_merge(save_parameters,size,users,users_size,&final_size); - config_str parameters = yon_config_get_save_parameters_by_list(&save_size,final,final_size); - 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,save_size); - } - if (users)yon_char_parsed_free(users,users_size); - if (save_parameters)yon_char_parsed_free(save_parameters,size); - } yon_debug_output("%s\n",yon_config_get_all_info()); return 1; } diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 584366d..0520595 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -858,7 +858,7 @@ void yon_main_window_create(main_window *widgets){ widgets->StartScenarioButton=yon_gtk_builder_get_widget(builder,"StartScenarioButton"); widgets->SourceButton=yon_gtk_builder_get_widget(builder,"SourceButton"); - widgets->SkipInstallationButton=yon_gtk_builder_get_widget(builder,"SkipInstallationButton"); + // widgets->SkipInstallationButton=yon_gtk_builder_get_widget(builder,"SkipInstallationButton"); widgets->InstallationRadio=yon_gtk_builder_get_widget(builder,"InstallationRadio"); widgets->InstallationNearRadio=yon_gtk_builder_get_widget(builder,"InstallationNearRadio"); @@ -1087,11 +1087,6 @@ void yon_main_window_create(main_window *widgets){ widgets->PackagesChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"PackagesChosenCell")); widgets->PackagesList = GTK_TREE_STORE(gtk_builder_get_object(builder,"Packages")); - widgets->AdditionalPageButton = yon_gtk_builder_get_widget(builder,"AdditionalPageButton"); - widgets->KernelComponentsPageButton = yon_gtk_builder_get_widget(builder,"KernelComponentsPageButton"); - widgets->KernelPageButton = yon_gtk_builder_get_widget(builder,"KernelPageButton"); - widgets->AdditionalPackagesPageButton = yon_gtk_builder_get_widget(builder,"AdditionalPackagesPageButton"); - widgets->HubPersonalListBox = yon_gtk_builder_get_widget(builder,"HubPersonalListBox"); widgets->HubHardwareListBox = yon_gtk_builder_get_widget(builder,"HubHardwareListBox"); widgets->HubSystemListBox = yon_gtk_builder_get_widget(builder,"HubSystemListBox"); @@ -1222,7 +1217,7 @@ void yon_main_window_create(main_window *widgets){ // g_signal_connect(G_OBJECT(widgets->AdvancedPartitionAddBox),"remove",G_CALLBACK(on_advanced_parts_removed),widgets); g_signal_connect(G_OBJECT(widgets->StartScenarioButton),"clicked",G_CALLBACK(yon_quick_install),widgets); g_signal_connect(G_OBJECT(widgets->SourceButton),"clicked",G_CALLBACK(on_source_clicked),widgets); - g_signal_connect(G_OBJECT(widgets->SkipInstallationButton),"clicked",G_CALLBACK(on_system_setup_pass),widgets); + // g_signal_connect(G_OBJECT(widgets->SkipInstallationButton),"clicked",G_CALLBACK(on_system_setup_pass),widgets); g_signal_connect(G_OBJECT(widgets->AdvancedAddButton),"clicked",G_CALLBACK(on_advanced_partition_create),widgets); g_signal_connect(G_OBJECT(widgets->AdvancedPartChosenCell),"toggled",G_CALLBACK(on_install_advanced_partition_chosen),widgets); g_signal_connect(G_OBJECT(widgets->AdvancedVirtualDeviceCombo),"changed",G_CALLBACK(on_advanced_virtual_device_changed),widgets); @@ -1230,11 +1225,6 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->PackagesTree),"row-activated",G_CALLBACK(yon_on_packages_activated),widgets); g_signal_connect(G_OBJECT(widgets->PackagesChosenCell),"toggled",G_CALLBACK(yon_on_packages_chosen),widgets); - g_signal_connect(G_OBJECT(widgets->AdditionalPageButton),"clicked",G_CALLBACK(on_additional_page_clicked),widgets); - g_signal_connect(G_OBJECT(widgets->KernelComponentsPageButton),"clicked",G_CALLBACK(on_kernel_components_page_clicked),widgets); - g_signal_connect(G_OBJECT(widgets->KernelPageButton),"clicked",G_CALLBACK(on_kernel_page_clicked),widgets); - g_signal_connect(G_OBJECT(widgets->AdditionalPackagesPageButton),"clicked",G_CALLBACK(on_additional_packages_page_clicked),widgets); - g_signal_connect(G_OBJECT(widgets->HubPersonalListBox),"child-activated",G_CALLBACK(on_configuration_hub_open),widgets); g_signal_connect(G_OBJECT(widgets->HubHardwareListBox),"child-activated",G_CALLBACK(on_configuration_hub_open),widgets); g_signal_connect(G_OBJECT(widgets->HubSystemListBox),"child-activated",G_CALLBACK(on_configuration_hub_open),widgets); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 19cd813..5bc67ef 100755 --- a/source/ubinstall-gtk.h +++ b/source/ubinstall-gtk.h @@ -84,6 +84,9 @@ #define slide_0_path "/com/ublinux/images/slide-0.png" +#define arrow_left_icon_path "com.ublinux.ubinstall-gtk.arrow-left-symbolic" +#define arrow_right_icon_path "com.ublinux.ubinstall-gtk.arrow-right-symbolic" + #define slide_repeat_path "/com/ublinux/images/slide-1.png", \ "/com/ublinux/images/slide-2.png", \ "/com/ublinux/images/slide-3.png", \ @@ -100,6 +103,7 @@ NULL #define get_modules_command "pacman --color never -Qs ^ubm- | sed -Enr -e 'N;s/\\n/ ;/' -e \"s/^([^\\/]+)\\/([^[:blank:]]+)[[:blank:]]+([^[:blank:]]+)[[:blank:]]+(\\(([^\\)]+)\\)[^\\;]+|[^\\;]*);[[:blank:]]*(.*)/\\2;\\3;\\5;\\6/p\"" +#define get_available_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); @@ -369,7 +373,7 @@ enum YON_PAGES { YON_PAGE_STARTUP, YON_PAGE_BOOTLOADER, YON_PAGE_NETWORK, - YON_PAGE_PACKAGES_HUB, + YON_PAGE_PACKAGES, YON_PAGE_INSTALLATION, YON_PAGE_COMPLETION, YON_PAGE_COMPLETED, @@ -463,7 +467,7 @@ typedef struct { GtkWidget *StartScenarioButton; GtkWidget *SourceButton; - GtkWidget *SkipInstallationButton; + // GtkWidget *SkipInstallationButton; GtkWidget *MainSpinner; GtkWidget *StatusBox; @@ -733,11 +737,6 @@ typedef struct { GtkCellRenderer *PackagesChosenCell; GtkWidget *PackagesTree; - GtkWidget *AdditionalPageButton; - GtkWidget *KernelComponentsPageButton; - GtkWidget *KernelPageButton; - GtkWidget *AdditionalPackagesPageButton; - // Configuration hub slide section GtkWidget *HubPersonalListBox; GtkWidget *HubHardwareListBox; @@ -1379,4 +1378,7 @@ void yon_flow_box_clear(GtkFlowBox *target); void yon_configuration_hub_section_get_max_size(GtkFlowBox *target, int *ret_width, int *ret_height); void yon_configuration_hub_section_set_max_size(GtkFlowBox *target, int width, int height); void yon_configuration_hub_resize(main_window *widgets); -void on_configuration_hub_selected(GtkWidget* self, main_window *widgets); \ No newline at end of file +void on_configuration_hub_selected(GtkWidget* self, main_window *widgets); +gboolean yon_software_insert(struct row_data *row_input); +int yon_configuration_hub_save(main_window *widgets); +int yon_packages_tab_save(main_window *widgets); \ No newline at end of file diff --git a/ubinstall-gtk-slider.glade b/ubinstall-gtk-slider.glade new file mode 100644 index 0000000..c3ed4e2 --- /dev/null +++ b/ubinstall-gtk-slider.glade @@ -0,0 +1,34 @@ + + + + + + True + False + 0 + in + + + True + False + 5 + 5 + 5 + 5 + + + True + False + label + True + 0 + 0 + + + + + + + + + diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 71603f6..6056544 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -374,11 +374,6 @@ False com.ublinux.libublsettingsui-gtk3.flag-symbolic - - True - False - com.ublinux.libublsettingsui-gtk3.flag-finish-symbolic - True False @@ -419,11 +414,6 @@ False com.ublinux.libublsettingsui-gtk3.properties-symbolic - - True - False - document-edit-symbolic - True False @@ -2052,194 +2042,216 @@ agreement - + True - False - vertical - 5 - - - True - False - vertical - 5 - - - True - False - Personal - 0 - - - - - - - False - True - 0 - - - - - True - False - True - 150 - False - - - False - True - 1 - - - - - False - True - 0 - - - - - True - False - vertical - 5 - - - True - False - Hardware - 0 - - - - - - - False - True - 0 - - - - - True - False - True - 150 - False - - - False - True - 1 - - - - - False - True - 1 - - - - - True - False - vertical - 5 - - - True - False - System - 0 - - - - - - - False - True - 0 - - - - - True - False - True - 150 - False - - - False - True - 1 - - - - - False - True - 2 - - + True + never - + True False - vertical - 5 - - - True - False - Packages - 0 - - - - - - - False - True - 0 - - + none - + True False - True - 150 - False + vertical + 5 + + + True + False + vertical + 5 + + + True + False + Personal + 0 + + + + + + + False + True + 0 + + + + + True + False + True + 5 + 5 + 150 + False + + + False + True + 1 + + + + + False + True + 0 + + + + + True + False + vertical + 5 + + + True + False + Hardware + 0 + + + + + + + False + True + 0 + + + + + True + False + True + 5 + 5 + 150 + False + + + False + True + 1 + + + + + False + True + 1 + + + + + True + False + vertical + 5 + + + True + False + System + 0 + + + + + + + False + True + 0 + + + + + True + False + True + 5 + 5 + 150 + False + + + False + True + 1 + + + + + False + True + 2 + + + + + True + False + vertical + 5 + + + True + False + Packages + 0 + + + + + + + False + True + 0 + + + + + True + False + True + 5 + 5 + 150 + False + + + False + True + 1 + + + + + False + True + 3 + + - - False - True - 1 - - - False - True - 3 - @@ -3664,113 +3676,18 @@ agreement False True - 0 - - - - - True - False - - - False - True - 1 - - - - - True - False - 5 - - - True - False - Available languages in the system: - - - False - True - 0 - - - - - True - False - English, U.S.A.; Russian, Russia - - - True - True - 2 - - - - - True - True - True - image6 - - - - False - True - 3 - - - - - False - True - 2 - - - - - True - False - 5 - - - True - False - Language: - - - False - True - 0 - - - - - True - True - LanguagesFilter - 2 - - - - 1 - - - - - True - True - 2 - - + 0 + + + + + True + False False True - 3 + 1 @@ -6185,299 +6102,79 @@ agreement - - - - - True - True - 0 - - - - - + - True - True - True - - - - False - True - end - 1 - - - - - - - - - True - False - Net interfaces - - - - - True - True - 3 - - - - - False - True - 3 - - - - - 16 - - - - - True - False - Network - - - 16 - False - - - - - True - False - vertical - 5 - - - True - False - vertical - 5 - - - True - False - 10 - 10 - 10 - 10 - 5 - - - True - False - 48 - com.ublinux.ubinstall-gtk - 0 - - - False - True - 0 - - - - - True - False - vertical - - - True - False - Choose system kernel - True - 0 - - - - - - - - - False - True - 0 - - - - - True - False - This program will ask you few questions and help you install system on your computer - center - True - 0 - - - - - - False - True - 1 - - - - - True - True - 1 - - - - - False - True - 0 - - - - - True - False - - - False - True - 2 - - - - - False - True - 0 - - - - - True - False - vertical - 5 - - - True - False - 5 - 5 - 5 - 5 - 5 - - - True - False - Selecting additional installation components - - - False - True - 0 - - - - - Go to - True - True - True - - - False - True - end - 1 - - - - - False - True - 0 - - - - - - False - True - 1 - - - - - True - False - vertical - 5 - - - True - False - 5 - 5 - 5 - 5 - 5 - - - True - False - Selecting additional components for the system kernel + + + + + True + True + 0 + + + + + + + True + True + True + + + + False + True + end + 1 + + + + - - False - True - 0 - - - - Go to + + True - True - True + False + Net interfaces - - False - True - end - 1 - - False + True True - 0 + 3 - False True - 2 + 3 + + + 16 + + + + + True + False + Network + + + 16 + False + + + + + True + False + vertical + 5 True @@ -6488,16 +6185,18 @@ agreement True False - 5 - 5 - 5 - 5 + 10 + 10 + 10 + 10 5 - + True False - Selecting the system kernel + 48 + com.ublinux.ubinstall-gtk + 0 False @@ -6506,16 +6205,52 @@ agreement - - Go to + True - True - True + False + vertical + + + True + False + Additional system components + True + 0 + + + + + + + + + False + True + 0 + + + + + True + False + Configuring the installation of additional components + center + True + 0 + + + + + + False + True + 1 + + - False + True True - end 1 @@ -6526,72 +6261,22 @@ agreement 0 - - - - False - True - 3 - - - - - True - False - vertical - 5 - + True False - 5 - 5 - 5 - 5 - 5 - - - True - False - Selecting additional components from packages - - - False - True - 0 - - - - - Go to - True - True - True - - - False - True - end - 1 - - False True - 0 + 2 - False True - 4 + 0 @@ -6694,7 +6379,7 @@ agreement True False - Choose system kernel + Installation True 0 @@ -6761,15 +6446,66 @@ agreement - + True False - Installation - - - - - + vertical + 5 + + + True + False + 5 + + + True + False + + + + + + True + True + 0 + + + + + True + False + + + + + + True + True + 1 + + + + + False + True + 0 + + + + + True + False + 5 + + + + + + False + True + 1 + + False @@ -6777,17 +6513,6 @@ agreement 1 - - - True - False - - - False - True - 2 - - 18 @@ -13497,20 +13222,6 @@ separately into the selected partition. 1 - - - Skip configuration - True - True - image28 - - - False - True - end - 2 - - False