diff --git a/gresource.xml b/gresource.xml index a7ef298..fc38ddb 100644 --- a/gresource.xml +++ b/gresource.xml @@ -10,6 +10,7 @@ ubinstall-gtk-menu.glade ubinstall-gtk-menu-item.glade ubinstall-gtk-kernel-row.glade + ubinstall-gtk-kernel-addon-row.glade ubinstall-gtk-os-row.glade ubinstall-gtk-service-window.glade ubinstall-gtk-bootloader-user.glade diff --git a/locale/ubinstall-gtk.pot b/locale/ubinstall-gtk.pot index 14ba39c..68c41b1 100644 --- a/locale/ubinstall-gtk.pot +++ b/locale/ubinstall-gtk.pot @@ -1188,3 +1188,17 @@ msgstr "" #: source/ubl-strings.h:331 msgid "Repeating values" msgstr "" + +#: source/ubl-strings.h:331 +msgid "Package information" +msgstr "" + +#: source/ubl-strings.h:331 +msgid "Package:" +msgstr "" + +#: source/ubl-strings.h:331 +msgid "Module:" +msgstr "" + + diff --git a/locale/ubinstall-gtk_ru.po b/locale/ubinstall-gtk_ru.po index 12c1eb2..20d9b39 100644 --- a/locale/ubinstall-gtk_ru.po +++ b/locale/ubinstall-gtk_ru.po @@ -3027,4 +3027,16 @@ msgstr "Цюрих" #: source/ubl-strings.h:331 msgid "Repeating values" -msgstr "Повторяющиеся значения" \ No newline at end of file +msgstr "Повторяющиеся значения" + +#: source/ubl-strings.h:331 +msgid "Package information" +msgstr "Информация о пакете" + +#: source/ubl-strings.h:331 +msgid "Package:" +msgstr "Пакет:" + +#: source/ubl-strings.h:331 +msgid "Module:" +msgstr "Модуль:" diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 9e28868..acc10a7 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -63,6 +63,7 @@ set(DEPENDFILES ../ubinstall-gtk-menu.glade ../ubinstall-gtk-menu-item.glade ../ubinstall-gtk-kernel-row.glade + ../ubinstall-gtk-kernel-addon-row.glade ../ubinstall-gtk-os-row.glade ../ubinstall-gtk-service-window.glade ../ubinstall-gtk-bootloader-user.glade diff --git a/source/ubinstall-gtk-components.c b/source/ubinstall-gtk-components.c index f4a4f71..ad413ef 100644 --- a/source/ubinstall-gtk-components.c +++ b/source/ubinstall-gtk-components.c @@ -232,37 +232,37 @@ void yon_os_components_init(main_window *widgets){ } } -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); - } - 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 *){ + // 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); + // } + // } return 1; } diff --git a/source/ubinstall-gtk-kernel.c b/source/ubinstall-gtk-kernel.c index f76edfe..2d1e50e 100644 --- a/source/ubinstall-gtk-kernel.c +++ b/source/ubinstall-gtk-kernel.c @@ -97,10 +97,10 @@ void yon_kernel_row_setup(kernel_row *row, char *name, char *modules,char *packa row->modules = yon_char_new(modules); row->package = yon_char_new(package); - char *description_full = yon_char_new(description); + 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); + config_str description_wrapped = yon_char_wrap_to_lines(description_full,3,&size); description_full = yon_char_parsed_to_string(description_wrapped,size,"\n"); yon_char_parsed_free(description_wrapped,size); } @@ -154,9 +154,6 @@ void yon_kernel_addon_resize(main_window *widgets){ int install_size=0; int name_size=0; int modules_size=0; - gtk_widget_get_preferred_width(widgets->KernelAddonInstallLabel,&install_size,NULL); - gtk_widget_get_preferred_width(widgets->KernelAddonNameLabel,&name_size,NULL); - gtk_widget_get_preferred_width(widgets->KernelAddonModulesLabel,&modules_size,NULL); for (;iter;iter=iter->next){ kernel_row *row = g_object_get_data(G_OBJECT(iter->data),"kernel_row"); @@ -168,8 +165,6 @@ void yon_kernel_addon_resize(main_window *widgets){ if (name_sizeKernelAddonNameLabel),name_size,-1); - gtk_widget_set_size_request(GTK_WIDGET(widgets->KernelAddonModulesLabel),modules_size,-1); for (iter = list;iter;iter = iter->next){ kernel_row *row = g_object_get_data(G_OBJECT(iter->data),"kernel_row"); gtk_widget_set_size_request(GTK_WIDGET(row->InstallCheck),install_size,-1); @@ -241,11 +236,110 @@ void yon_kernel_setup(main_window *widgets){ yon_char_parsed_free(modules_parsed,modules_size); } +void on_kernel_addon_install_enabled(GtkWidget *, kernel_addon_row *row){ + if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(row->InstallCheck))){ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(main_config.kernel_unchosen_radio),1); + } +} + + +void on_kernel_addon_info(GtkLabel *self){ + yon_window *window = yon_window_new(); + yon_gtk_window_setup(GTK_WINDOW(window->Window),NULL,TITLE_LABEL,icon_path,"info-label"); + char *package=NULL; + package = yon_char_new(gtk_label_get_text(self)); + int size; + + if (strstr(package,",")){ + + char *temp = yon_char_replace(package,","," "); + free(package); + package = temp; + } + + GtkWidget *label = NULL; + config_str info = yon_config_load(get_package_info_command(package),&size); + if (size!=-1){ + char *final_text = yon_char_parsed_to_string(info,size,""); + label = gtk_label_new(final_text); + gtk_widget_show(label); + gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); + free(final_text); + } else { + label = gtk_label_new(PACKAGE_NOT_FOUND_LABEL); + gtk_widget_show(label); + gtk_box_pack_start(GTK_BOX(window->MainBox),label,0,0,0); + } + gtk_label_set_xalign(GTK_LABEL(label),0); + gtk_widget_show(window->Window); +} + +kernel_addon_row *yon_kernel_addon_row_new(){ + kernel_addon_row *row = new(kernel_addon_row); + GtkBuilder *builder = gtk_builder_new_from_resource(glade_path_kernel_addon_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->ModuleLabel = yon_gtk_builder_get_widget(builder,"ModuleLabel"); + row->PackageLabel = yon_gtk_builder_get_widget(builder,"PackageLabel"); + row->DescriptionLabel = yon_gtk_builder_get_widget(builder,"DescriptionLabel"); + row->name=NULL; + row->modules=NULL; + row->package=NULL; + + g_signal_connect(G_OBJECT(row->InstallCheck),"toggled",G_CALLBACK(on_kernel_addon_install_enabled),row); + g_signal_connect(G_OBJECT(row->ModuleLabel),"activate-link",G_CALLBACK(on_kernel_addon_info),NULL); + g_signal_connect(G_OBJECT(row->PackageLabel),"activate-link",G_CALLBACK(on_kernel_addon_info),NULL); + + 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_kernel_addon_row_setup(kernel_addon_row *row, char *name, char *modules,char *package, char *description){ + row->name = yon_char_new(name); + row->modules = yon_char_new(modules); + row->package = yon_char_new(package); + + 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); + } + + char *package_label = NULL; + if (!yon_char_is_empty(row->modules)){ + package_label = yon_char_unite("",row->modules,"",NULL); + gtk_label_set_markup(GTK_LABEL(row->PackageLabel),package_label); + } else { + gtk_widget_hide(gtk_widget_get_parent(row->PackageLabel)); + } + char *module_label = NULL; + if (!yon_char_is_empty(row->package)){ + module_label = yon_char_unite("",row->package,"",NULL); + gtk_label_set_markup(GTK_LABEL(row->ModuleLabel),module_label); + } else { + gtk_widget_hide(gtk_widget_get_parent(row->ModuleLabel)); + } + gtk_label_set_label(GTK_LABEL(row->NameLabel),_(name)); + gtk_label_set_label(GTK_LABEL(row->DescriptionLabel),description_full); + + free(description_full); +} + void yon_kernel_addon_setup(main_window *widgets){ GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelAddonListBox)); GList *iter; for (iter = list; iter; iter = iter->next){ - kernel_row *row = g_object_get_data(G_OBJECT(iter->data),"kernel_row"); + kernel_addon_row *row = g_object_get_data(G_OBJECT(iter->data),"kernel_row"); if (row){ if (row->name) free(row->name); if (!yon_char_is_empty(row->modules)) free(row->modules); @@ -271,26 +365,20 @@ void yon_kernel_addon_setup(main_window *widgets){ config_str parsed = yon_char_parse(kernels[i],&parsed_size,";"); char *name = parsed[0]; char *modules = yon_char_new(parsed[1]); - char *tags = NULL; char *package = parsed[2]; char *description = parsed[3]; - kernel_row *row = yon_kernel_row_new(); + kernel_addon_row *row = yon_kernel_addon_row_new(); gtk_list_box_insert(GTK_LIST_BOX(widgets->KernelAddonListBox),row->row,-1); - gtk_size_group_add_widget(widgets->KernelSizeGroup,row->TagsBox); - gtk_widget_destroy(row->TagsBox); - gtk_widget_destroy(row->TagsSeparator); - gtk_widget_destroy(row->EnableRadio); - gtk_widget_destroy(row->EnableSeparator); - yon_kernel_row_setup(row,name,modules,package,tags,description); + yon_kernel_addon_row_setup(row,name,modules,package,description); if (yon_char_parsed_check_exist(modules_parsed,modules_size,parsed[1])>-1){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),1); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(row->InstallCheck),0); } - yon_char_parsed_free(parsed,parsed_size); + // yon_char_parsed_free(parsed,parsed_size); } yon_kernel_addon_resize(widgets); diff --git a/source/ubinstall-gtk.c b/source/ubinstall-gtk.c index 1b6d0e9..5c88d01 100644 --- a/source/ubinstall-gtk.c +++ b/source/ubinstall-gtk.c @@ -574,12 +574,12 @@ void config_init(){ // void *on_setup_system_configuration(void *data); -void on_additional_software_toggled(GtkWidget *, char *path, main_window *widgets){ - GtkTreeIter iter; - int status; - gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->AdditionalSoftwareList),&iter,path); - gtk_tree_model_get(GTK_TREE_MODEL(widgets->AdditionalSoftwareList),&iter,0,&status,-1); - gtk_list_store_set(widgets->AdditionalSoftwareList,&iter,0,!status,-1); +void on_additional_software_toggled(GtkWidget *, char *, main_window *){ + // GtkTreeIter iter; + // int status; + // gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(widgets->AdditionalSoftwareList),&iter,path); + // gtk_tree_model_get(GTK_TREE_MODEL(widgets->AdditionalSoftwareList),&iter,0,&status,-1); + // gtk_list_store_set(widgets->AdditionalSoftwareList,&iter,0,!status,-1); } void on_gparted_open(){ @@ -975,9 +975,7 @@ void yon_main_window_create(main_window *widgets){ widgets->KeyboardBox = yon_gtk_builder_get_widget(builder,"KeyboardBox"); widgets->KeyboardLayoutChosenCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"KeyboardLayoutChosenCell")); - widgets->AdditionalSoftwareList = GTK_LIST_STORE(gtk_builder_get_object(builder,"AdditionalSoftwareList")); - widgets->AdditionalSoftwareTree = yon_gtk_builder_get_widget(builder,"AdditionalSoftwareTree"); - widgets->AdditionalSoftwareCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"AdditionalSoftwareCell")); + widgets->AdditionalComponentsList = yon_gtk_builder_get_widget(builder,"AdditionalComponentsList"); widgets->InstallationProgress = yon_gtk_builder_get_widget(builder,"InstallationProgress"); @@ -1113,7 +1111,6 @@ void yon_main_window_create(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->LanguagesTree),"cursor-changed",G_CALLBACK(on_locale_changed),widgets); g_signal_connect(G_OBJECT(widgets->CountryLanguagesTree),"row-activated",G_CALLBACK(on_installer_language_changed),widgets); // g_signal_connect(G_OBJECT(widgets->LanguageCombo),"changed",G_CALLBACK(on_locale_changed),widgets); - g_signal_connect(G_OBJECT(widgets->AdditionalSoftwareCell),"toggled",G_CALLBACK(on_additional_software_toggled),widgets); g_signal_connect(G_OBJECT(widgets->StartupChosenCell),"toggled",G_CALLBACK(on_srartup_services_toggled),widgets); g_signal_connect(G_OBJECT(widgets->StartupServicesTree),"cursor-changed",G_CALLBACK(on_startup_services_selection_changed),widgets); diff --git a/source/ubinstall-gtk.h b/source/ubinstall-gtk.h index 383a382..fb7f732 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_kernel_addon_row "/com/ublinux/ui/ubinstall-gtk-kernel-addon-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" @@ -274,6 +275,8 @@ layout && /description:/ {\ #define languages_command "while IFS= read -ru3 SELECT_LOCALE; do SELECT_LOCALE=\"${SELECT_LOCALE% *}\"; [[ $(< /usr/share/i18n/locales/${SELECT_LOCALE%.*}) =~ (\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"country_name\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"lang_name\"[[:blank:]]*\\\"([^\\\"]*)\\\")|(\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"lang_name\"[[:blank:]]*\\\"([^\\\"]*)\\\")|(\"language\"[[:blank:]]*\\\"([^\\\"]*)\\\".*\"territory\"[[:blank:]]*\\\"([^\\\"]*)\\\") ]] && echo \"${SELECT_LOCALE}|${BASH_REMATCH[2]}${BASH_REMATCH[7]}${BASH_REMATCH[11]}${BASH_REMATCH[5]:+ (${BASH_REMATCH[5]})}${BASH_REMATCH[9]:+ (${BASH_REMATCH[9]})}|${BASH_REMATCH[3]}${BASH_REMATCH[8]}${BASH_REMATCH[12]}${BASH_REMATCH[4]:+ (${BASH_REMATCH[4]})}\" || echo \"${SELECT_LOCALE}\"; done 3< \"/usr/share/i18n/SUPPORTED\"" +#define get_package_info_command(target) yon_char_append("pacman -Si ",target) + #define install_common_parameters \ AUTOINSTALL_TYPE_INSTALL,\ AUTOINSTALL_DEVICE,\ @@ -420,7 +423,6 @@ typedef struct { GtkListStore *DevicesList; GtkListStore *LanguagesList; GtkTreeStore *LayoutList; - GtkListStore *AdditionalSoftwareList; GtkListStore *PartitionsList; GtkWidget *LoadGlobalConfigurationMenuItem; @@ -540,9 +542,7 @@ typedef struct { GtkWidget *AboutMenuItem; GtkWidget *DocumentationMenuItem; - GtkCellRenderer *AdditionalSoftwareCell; - - GtkWidget *AdditionalSoftwareTree; + GtkWidget *AdditionalComponentsList; GtkWidget *GrubInstallRadio; GtkWidget *GrubUpdateRadio; @@ -851,28 +851,42 @@ typedef struct { typedef struct { GtkWidget *row; GtkWidget *RowBox; - GtkWidget *TagsBox; GtkWidget *InstallCheck; + GtkWidget *NameLabel; + GtkWidget *DescriptionLabel; + GtkWidget *ModulesLabel; + GtkWidget *TagsBox; GtkWidget *EnableRadio; GtkWidget *EnableSeparator; GtkWidget *TagsSeparator; + + char *name; + char *modules; + char *package; +} kernel_row; + +typedef struct { + GtkWidget *row; + GtkWidget *RowBox; + GtkWidget *InstallCheck; GtkWidget *NameLabel; GtkWidget *DescriptionLabel; - GtkWidget *ModulesLabel; + GtkWidget *ModuleLabel; + GtkWidget *PackageLabel; char *name; char *modules; char *package; -} kernel_row; +} kernel_addon_row; typedef struct { GtkWidget *row; GtkWidget *RowBox; - GtkWidget *TagsBox; GtkWidget *InstallCheck; GtkWidget *NameLabel; - GtkWidget *VersionLabel; GtkWidget *DescriptionLabel; + GtkWidget *VersionLabel; + GtkWidget *TagsBox; char *name; char *modules; @@ -1213,4 +1227,8 @@ void on_source_changed(GtkComboBox *self); void yon_focus_set(GtkWidget *,GtkWidget *target); void on_main_window_close(GtkWidget*, main_window *); gboolean yon_maximize_start(main_window *widgets); -void *yon_maximize(main_window *widgets); \ No newline at end of file +void *yon_maximize(main_window *widgets); +kernel_addon_row *yon_kernel_addon_row_new(); +void yon_kernel_addon_row_setup(kernel_addon_row *row, char *name, char *modules,char *package, char *description); +void on_kernel_addon_install_enabled(GtkWidget *, kernel_addon_row *row); +void on_kernel_addon_info(GtkLabel *self); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index b5552cf..5a3b300 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -230,6 +230,10 @@ NULL) #define CREATE_CONFIG_DIALOG_LABEL _("Configuration file does not exist. Create new configuration file?") #define CREATE_CONFIG_DIALOG_LABEL_HOMEDIR _("Configuration file does not exist. Create new configuration file? New configuration file will be created at your user's home directory") #define ROOT_FORCE_CONFIGURATION_MODE_LABEL _("Warning! Application was launched without root. Only configuration mode is allowed.") +#define PACKAGE_NOT_FOUND_LABEL _("Package were not found") +#define PACKAGE_INFO_LABEL _("Package information") +// #define _LABEL _("Package:") +// #define _LABEL _("Module:") // #define _LABEL _("New section at") // #define _LABEL _("\"/ublinux-data/\" user data section") // #define _LABEL _("\"/ublinux/\" system section") diff --git a/ubinstall-gtk-kernel-addon-row.glade b/ubinstall-gtk-kernel-addon-row.glade new file mode 100644 index 0000000..c418d9a --- /dev/null +++ b/ubinstall-gtk-kernel-addon-row.glade @@ -0,0 +1,183 @@ + + + + + + + True + False + 1 + vertical + + + True + False + 5 + 7 + + + True + True + False + 5 + True + + + + + + False + True + 0 + + + + + True + False + vertical + + + True + False + Name + True + True + False + 0 + + + False + True + 0 + + + + + True + False + 5 + + + True + False + <i><b>Module:</b></i> + True + + + False + True + 0 + + + + + True + False + Name + True + False + 0 + + + False + True + 1 + + + + + False + True + 1 + + + + + True + False + 5 + + + True + False + <i><b>Package:</b></i> + True + + + False + True + 0 + + + + + True + False + Name + True + False + 0 + + + False + True + 1 + + + + + False + True + 2 + + + + + False + True + 3 + + + + + True + False + 5 + 0 + + + False + True + 8 + + + + + True + False + 5 + 0 + + + False + True + end + 9 + + + + + + False + True + 0 + + + + + diff --git a/ubinstall-gtk.glade b/ubinstall-gtk.glade index 8f2fcbf..bb8bea3 100644 --- a/ubinstall-gtk.glade +++ b/ubinstall-gtk.glade @@ -754,7 +754,6 @@ agreement 5 5 left - False True @@ -887,6 +886,9 @@ agreement InstallerLanguageList False 1 + + + True @@ -934,6 +936,9 @@ agreement 1 3 True + + + @@ -1124,12 +1129,14 @@ agreement - - Agree + + Yes, I agree to the License Agreement True True False + True True + LicenseDisgreeRadio False @@ -1137,6 +1144,21 @@ agreement 2 + + + No, i do not agree + True + True + False + True + True + + + False + True + 3 + + 1 @@ -2467,121 +2489,10 @@ agreement 5 5 - + True False - vertical - - - True - False - 2 - 2 - 7 - - - True - False - Install - 0 - - - False - True - 0 - - - - - True - False - - - False - True - 3 - - - - - True - False - Name - 0 - - - False - True - 4 - - - - - True - False - - - False - True - 7 - - - - - True - False - Modules - 0 - - - False - True - 8 - - - - - True - False - - - False - True - 9 - - - - - True - False - Description - 0 - - - True - True - 10 - - - - - False - True - 0 - - - - - True - False - none - - - True - True - 1 - - + none