diff --git a/kernel-list.csv b/kernel-list.csv index 06d5c91..eb5ba2f 100644 --- a/kernel-list.csv +++ b/kernel-list.csv @@ -1,4 +1,4 @@ NAME;PAСKAGE_UBM;PAСKAGE;PAСKAGE_UBM_REQUIRED;PAСKAGE_REQUIRED;TAG;DESCRIPTION -Linux 5.15;ubm-001-linux515;linux515;ubm-001-linux515-headers;linux515-headers;LTS, Stable, RealTime, Hardened, Recomended;The Linux kernel v5.15 and modules, headers. Manual modules: acpi_call, bbswitch, broadcom-wl, r8168, rtl8723bu, tp_smapi, vhba-module, virtualbox-host-modules, zfs -Linux 6.1;ubm-001-linux61;linux61;ubm-001-linux61-headers;linux61-headers;LTS, Stable, RealTime, Hardened, Recomended;The Linux kernel v6.1 and modules, headers. Manual modules: acpi_call, bbswitch, broadcom-wl, r8168, rtl8723bu, tp_smapi, vhba-module, virtualbox-host-modules, zfs -Linux 6.6;ubm-001-linux66;linux66;ubm-001-linux66-headers;linux66-headers;LTS, Stable, RealTime, Hardened, Recomended;The Linux kernel v6.6 and modules, headers. Manual modules: acpi_call, bbswitch, broadcom-wl, r8168, rtl8723bu, tp_smapi, vhba-module, virtualbox-host-modules, zfs \ No newline at end of file +Linux 5.15;ubm-001-linux515;linux515;ubm-002-linux515-headers;linux515-headers;LTS, Stable, RealTime, Hardened, Recomended;The Linux kernel v5.15 and modules, headers. Manual modules: acpi_call, bbswitch, broadcom-wl, r8168, rtl8723bu, tp_smapi, vhba-module, virtualbox-host-modules, zfs +Linux 6.1;ubm-001-linux61;linux61;ubm-002-linux61-headers;linux61-headers;LTS, Stable, RealTime, Hardened, Recomended;The Linux kernel v6.1 and modules, headers. Manual modules: acpi_call, bbswitch, broadcom-wl, r8168, rtl8723bu, tp_smapi, vhba-module, virtualbox-host-modules, zfs +Linux 6.6;ubm-001-linux66;linux66;ubm-002-linux66-headers;linux66-headers;LTS, Stable, RealTime, Hardened, Recomended;The Linux kernel v6.6 and modules, headers. Manual modules: acpi_call, bbswitch, broadcom-wl, r8168, rtl8723bu, tp_smapi, vhba-module, virtualbox-host-modules, zfs \ No newline at end of file diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 67972da..eee2e4a 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -397,6 +397,24 @@ gboolean on_command_execute_success(GtkWidget *,gint status,main_window *widgets } else { yon_ubl_status_box_render(OPERATION_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } + gtk_widget_set_sensitive(widgets->UpdateButton,1); + dictionary *dict = NULL; + for_dictionaries(dict,main_config.kernel_tabs){ + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->update_module_button,1); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->update_package_button,1); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->install_module_button,1); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->install_package_button,1); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_module_button,1); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_package_button,1); + } + for_dictionaries(dict,main_config.addition_tabs){ + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->update_module_button,1); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->update_package_button,1); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->install_module_button,1); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->install_package_button,1); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_module_button,1); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_package_button,1); + } return G_SOURCE_REMOVE; } @@ -443,7 +461,7 @@ void *yon_command_execute_async(char *command,main_window *widgets){ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->InstallationProgress),0); vte_terminal_reset(VTE_TERMINAL(widgets->InstallTerminal),0,1); yon_terminal_integrated_start_shell(widgets->InstallTerminal,yon_debug_output("%s\n",command),NULL,NULL); - g_signal_connect_after(G_OBJECT(widgets->InstallTerminal),"child-exited",G_CALLBACK(on_command_execute_success),widgets); + // g_signal_connect_after(G_OBJECT(widgets->InstallTerminal),"child-exited",G_CALLBACK(on_command_execute_success),widgets); // yon_terminal_integrated_start(widgets->InstallTerminal,yon_debug_output("%s\n",command)); glong columns = vte_terminal_get_column_count(VTE_TERMINAL(widgets->InstallTerminal)); vte_terminal_set_size(VTE_TERMINAL(widgets->InstallTerminal),columns,20); @@ -453,6 +471,24 @@ void *yon_command_execute_async(char *command,main_window *widgets){ main_config.progress_active=1; g_mutex_unlock(&main_config.progress_mutex); gdk_threads_add_timeout(500,(GSourceFunc)yon_terminal_get_progress,widgets); + gtk_widget_set_sensitive(widgets->UpdateButton,0); + dictionary *dict = NULL; + for_dictionaries(dict,main_config.kernel_tabs){ + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->update_module_button,0); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->update_package_button,0); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->install_module_button,0); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->install_package_button,0); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_module_button,0); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_package_button,0); + } + for_dictionaries(dict,main_config.addition_tabs){ + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->update_module_button,0); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->update_package_button,0); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->install_module_button,0); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->install_package_button,0); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_module_button,0); + gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_package_button,0); + } return NULL; } @@ -508,6 +544,62 @@ void on_package_install_accept(GtkWidget *, dictionary *dict){ on_subwindow_close(window->Window); } +void on_module_remove_accept(GtkWidget *, dictionary *dict){ + main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); + kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*); + dialog_window *window = yon_dictionary_get_data(dict->first->next->next,dialog_window*); + free(dict->first->next->next); + dict->first->next->next = NULL; + char *module_formated = yon_package_string_set(tab->module); + char *modules_to_install = module_formated; + + if (gtk_widget_get_visible(window->DependencesFrame)){ + GtkTreeIter iter; + for_iter (GTK_TREE_MODEL(window->liststore1),&iter){ + int status; + char *package; + gtk_tree_model_get(GTK_TREE_MODEL(window->liststore1),&iter,0,&status,1,&package,-1); + if (status){ + char *temp = yon_char_unite(modules_to_install," ", package, NULL); + if (strcmp(modules_to_install,module_formated)) free(modules_to_install); + modules_to_install = temp; + } + } + } + char *command = remove_command(modules_to_install); + yon_command_execute_async(command,widgets); + tab->module_installed=0; + on_subwindow_close(window->Window); +} + +void on_package_remove_accept(GtkWidget *, dictionary *dict){ + main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); + kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*); + dialog_window *window = yon_dictionary_get_data(dict->first->next->next,dialog_window*); + free(dict->first->next->next); + dict->first->next->next = NULL; + char *module_formated = yon_package_string_set(tab->package); + char *modules_to_install = module_formated; + + if (gtk_widget_get_visible(window->DependencesFrame)){ + GtkTreeIter iter; + for_iter (GTK_TREE_MODEL(window->liststore1),&iter){ + int status; + char *package; + gtk_tree_model_get(GTK_TREE_MODEL(window->liststore1),&iter,0,&status,1,&package,-1); + if (status){ + char *temp = yon_char_unite(modules_to_install," ", package, NULL); + if (strcmp(modules_to_install,module_formated)) free(modules_to_install); + modules_to_install = temp; + } + } + } + char *command = remove_command(modules_to_install); + yon_command_execute_async(command,widgets); + tab->package_installed=0; + on_subwindow_close(window->Window); +} + dialog_window *yon_dialog_window_new(){ GtkBuilder *builder = gtk_builder_new_from_resource(glade_dialog_path); dialog_window *window = malloc(sizeof(dialog_window)); @@ -517,6 +609,7 @@ dialog_window *yon_dialog_window_new(){ window->DependencesTree = yon_gtk_builder_get_widget(builder,"DependencesTree"); window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); + window->DependencesFrame = yon_gtk_builder_get_widget(builder,"DependencesFrame"); window->ChooseCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ChooseCell")); window->liststore1 = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1")); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); @@ -528,48 +621,52 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*); char *action_text = NULL; - if (self == tab->update_module_button) - action_text = KERNEL_MODULE_UPDATE_CONFIRMATION_LABEL(tab->name); - else - action_text = KERNEL_MODULE_INSTALL_CONFIRMATION_LABEL(tab->name); - if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ dialog_window *window = yon_dialog_window_new(); + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_MODULE_TITLE_LABEL:INSTALL_MODULE_TITLE_LABEL,icon_path,"dialog"); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_module_install_accept),dict); + if (self == tab->update_module_button){ + if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ + action_text = KERNEL_MODULE_UPDATE_CONFIRMATION_LABEL(tab->name); + gtk_label_set_text(GTK_LABEL(window->HeadLabel),UPDATE_MODULE_TITLE_LABEL); + } else { + action_text = ADDITION_MODULE_UPDATE_CONFIRMATION_LABEL(tab->name); + gtk_label_set_text(GTK_LABEL(window->HeadLabel),UPDATE_ADDITION_MODULE_TITLE_LABEL); + + } + } else { + if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ + action_text = KERNEL_MODULE_INSTALL_CONFIRMATION_LABEL(tab->name); + gtk_label_set_text(GTK_LABEL(window->HeadLabel),INSTALL_MODULE_TITLE_LABEL); + } else { + action_text = ADDITION_MODULE_INSTALL_CONFIRMATION_LABEL(tab->name); + gtk_label_set_text(GTK_LABEL(window->HeadLabel),INSTALL_ADDITION_MODULE_TITLE_LABEL); + } + } + gtk_label_set_text(GTK_LABEL(window->TopicLabel),action_text); gtk_widget_show(window->Window); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); - int size; - config_str additions = yon_resource_open_file(kernels_addon_path,&size); - GtkTreeIter iter; - for (int i=0;imodule_requirements_size;i++){ - gtk_list_store_append(window->liststore1,&iter); - for (int j=1;jmodule_requirements[i])) - gtk_list_store_set(window->liststore1,&iter,2,parsed[3],-1); - yon_char_parsed_free(parsed,cur_size); - } - gtk_list_store_set(window->liststore1,&iter,0,1,1,tab->module_requirements[i],-1); - } - yon_char_parsed_free(additions,size); + if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ + gtk_widget_hide(window->DependencesFrame); + gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START); } else { - - dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); - if (self == tab->update_module_button) - data->action_text = ADDITION_MODULE_UPDATE_CONFIRMATION_LABEL(tab->name); - else - data->action_text = ADDITION_MODULE_INSTALL_CONFIRMATION_LABEL(tab->name); - data->function = NULL; - data->data = NULL; - if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){ - char *target = yon_package_string_set(tab->module); - char *command = install_command(target); - yon_command_execute_async(command,widgets); - tab->module_installed=1; + int size; + config_str additions = yon_resource_open_file(kernels_addon_path,&size); + GtkTreeIter iter; + for (int i=0;imodule_requirements_size;i++){ + gtk_list_store_append(window->liststore1,&iter); + for (int j=1;jmodule_requirements[i])) + gtk_list_store_set(window->liststore1,&iter,2,parsed[3],-1); + yon_char_parsed_free(parsed,cur_size); + } + gtk_list_store_set(window->liststore1,&iter,0,1,1,tab->module_requirements[i],-1); } + yon_char_parsed_free(additions,size); } } @@ -577,18 +674,36 @@ void on_package_install_clicked(GtkWidget *self,dictionary *dict){ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*); char *action_text = NULL; - if (self == tab->update_module_button) - action_text = KERNEL_PACKAGE_UPDATE_CONFIRMATION_LABEL(tab->name); - else - action_text = KERNEL_PACKAGE_INSTALL_CONFIRMATION_LABEL(tab->name); - if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ dialog_window *window = yon_dialog_window_new(); + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_PACKAGE_TITLE_LABEL:INSTALL_PACKAGE_TITLE_LABEL,icon_path,"dialog"); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_package_install_accept),dict); + if (self == tab->update_module_button){ + if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ + action_text = KERNEL_PACKAGE_UPDATE_CONFIRMATION_LABEL(tab->name); + gtk_label_set_text(GTK_LABEL(window->HeadLabel),UPDATE_PACKAGE_TITLE_LABEL); + } else { + action_text = ADDITION_PACKAGE_UPDATE_CONFIRMATION_LABEL(tab->name); + gtk_label_set_text(GTK_LABEL(window->HeadLabel),UPDATE_ADDITION_PACKAGE_TITLE_LABEL); + } + }else{ + if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ + action_text = KERNEL_PACKAGE_INSTALL_CONFIRMATION_LABEL(tab->name); + gtk_label_set_text(GTK_LABEL(window->HeadLabel),INSTALL_PACKAGE_TITLE_LABEL); + } else { + action_text = ADDITION_PACKAGE_INSTALL_CONFIRMATION_LABEL(tab->name); + gtk_label_set_text(GTK_LABEL(window->HeadLabel),INSTALL_ADDITION_PACKAGE_TITLE_LABEL); + } + } + gtk_label_set_text(GTK_LABEL(window->TopicLabel),action_text); gtk_widget_show(window->Window); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); + if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ + gtk_widget_hide(window->DependencesFrame); + gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START); + } else { int size; config_str additions = yon_resource_open_file(kernels_addon_path,&size); GtkTreeIter iter; @@ -604,21 +719,7 @@ void on_package_install_clicked(GtkWidget *self,dictionary *dict){ gtk_list_store_set(window->liststore1,&iter,0,1,1,tab->package_requirements[i],-1); } yon_char_parsed_free(additions,size); - } else { - dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); - if (self == tab->update_package_button) - data->action_text = ADDITION_PACKAGE_UPDATE_CONFIRMATION_LABEL(tab->name); - else - data->action_text = ADDITION_PACKAGE_INSTALL_CONFIRMATION_LABEL(tab->name); - data->function = NULL; - data->data = NULL; - if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){ - char *target = yon_package_string_set(tab->package); - char *command = install_command(target); - yon_command_execute_async(command,widgets); - tab->package_installed=1; - } } } @@ -654,23 +755,46 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){ } break; } } - dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); + char *action_text = NULL; + dialog_window *window = yon_dialog_window_new(); + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_MODULE_TITLE_LABEL:INSTALL_MODULE_TITLE_LABEL,icon_path,"dialog"); + yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); + g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_module_remove_accept),dict); + + gtk_widget_show(window->Window); + yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); + if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ + action_text = KERNEL_MODULE_REMOVE_CONFIRMATION_LABEL(tab->name); + gtk_widget_hide(window->DependencesFrame); + gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START); + gtk_label_set_text(GTK_LABEL(window->HeadLabel),INSTALL_ADDITION_MODULE_TITLE_LABEL); + } else { + gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_MODULE_TITLE_LABEL); + action_text = ADDITION_MODULE_REMOVE_CONFIRMATION_LABEL(tab->name); if (installed_kernels>1){ - data->action_text = KERNEL_MODULE_REMOVE_CONFIRMATION_LABEL(tab->name); + action_text = KERNEL_MODULE_REMOVE_CONFIRMATION_LABEL(tab->name); } else if (installed_kernels==1){ - data->action_text = KERNEL_REMOVE_LAST_CONFIRMATION_LABEL(tab->name); + action_text = KERNEL_REMOVE_LAST_CONFIRMATION_LABEL(tab->name); } - data->function = NULL; - data->data = NULL; - if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){ - char *target = yon_package_string_set(tab->module); - char *command = remove_command(target); - char *command_unload = unload_command(target); - if (system(yon_debug_output("%s\n",command_unload))){}; - g_signal_connect(G_OBJECT(widgets->InstallTerminal),"child-exited",G_CALLBACK(on_module_remove_done),tab); - yon_command_execute_async(command,widgets); - tab->module_installed=0; + int size; + config_str additions = yon_resource_open_file(kernels_addon_path,&size); + GtkTreeIter iter; + for (int i=0;imodule_requirements_size;i++){ + if (!system(get_package_is_installed_command(tab->module))){ + gtk_list_store_append(window->liststore1,&iter); + for (int j=1;jmodule_requirements[i])) + gtk_list_store_set(window->liststore1,&iter,2,parsed[3],-1); + yon_char_parsed_free(parsed,cur_size); + } + gtk_list_store_set(window->liststore1,&iter,0,1,1,tab->module_requirements[i],-1); + } + } + yon_char_parsed_free(additions,size); } + gtk_label_set_text(GTK_LABEL(window->TopicLabel),action_text); } @@ -698,21 +822,47 @@ void on_package_remove_clicked(GtkWidget *self,dictionary *dict){ } break; } } - dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); + + dialog_window *window = yon_dialog_window_new(); + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_MODULE_TITLE_LABEL:INSTALL_MODULE_TITLE_LABEL,icon_path,"dialog"); + yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); + g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_package_remove_accept),dict); + char *action_text = ""; + + gtk_widget_show(window->Window); + yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); + if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ + action_text = KERNEL_PACKAGE_REMOVE_CONFIRMATION_LABEL(tab->name); + gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_ADDITION_PACKAGE_TITLE_LABEL); + gtk_widget_hide(window->DependencesFrame); + gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START); + } else { if (installed_kernels>1){ - data->action_text = KERNEL_PACKAGE_REMOVE_CONFIRMATION_LABEL(tab->name); + action_text = ADDITION_PACKAGE_REMOVE_CONFIRMATION_LABEL(tab->name); } else if (installed_kernels==1){ - data->action_text = KERNEL_REMOVE_LAST_CONFIRMATION_LABEL(tab->name); + action_text = KERNEL_REMOVE_LAST_CONFIRMATION_LABEL(tab->name); } - data->function = NULL; - data->data = NULL; - int resp = yon_confirmation_dialog_call(self,data); - if (resp == GTK_RESPONSE_ACCEPT){ - char *target = yon_package_string_set(tab->package); - char *command = remove_command(target); - yon_command_execute_async(command,widgets); - tab->package_installed=0; + + gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_PACKAGE_TITLE_LABEL); + int size; + config_str additions = yon_resource_open_file(kernels_addon_path,&size); + GtkTreeIter iter; + for (int i=0;imodule_requirements_size;i++){ + if (!system(get_package_is_installed_command(tab->package))){ + gtk_list_store_append(window->liststore1,&iter); + for (int j=1;jmodule_requirements[i])) + gtk_list_store_set(window->liststore1,&iter,2,parsed[3],-1); + yon_char_parsed_free(parsed,cur_size); + } + gtk_list_store_set(window->liststore1,&iter,0,1,1,tab->module_requirements[i],-1); + } + } + yon_char_parsed_free(additions,size); } + gtk_label_set_text(GTK_LABEL(window->TopicLabel),action_text); } @@ -1113,7 +1263,7 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->UpdateButton),"clicked",G_CALLBACK(on_update_clicked),widgets); g_signal_connect(G_OBJECT(widgets->BuildingButton),"clicked",G_CALLBACK(on_building_clicked),widgets); g_signal_connect(G_OBJECT(widgets->MoreButton),"clicked",G_CALLBACK(on_terminal_revealer_open),widgets); - // g_signal_connect(G_OBJECT(widgets->InstallTerminal),"child-exited",G_CALLBACK(on_command_execute_success),widgets); + g_signal_connect(G_OBJECT(widgets->InstallTerminal),"child-exited",G_CALLBACK(on_command_execute_success),widgets); g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(on_config_save),widgets); g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_save),widgets); @@ -1145,6 +1295,8 @@ void yon_main_window_complete(main_window *widgets){ on_update_clicked(NULL,widgets); yon_save_window_set_postsave_function(on_save_done,widgets); + + yon_command_execute_async(pacman_update_command,widgets); } yon_load_proceed(YON_CONFIG_LOCAL); } diff --git a/source/ubl-settings-kernel.h b/source/ubl-settings-kernel.h index 53a111d..0d96a86 100644 --- a/source/ubl-settings-kernel.h +++ b/source/ubl-settings-kernel.h @@ -48,6 +48,7 @@ #define get_package_is_installed_command(target) yon_char_append("pacman -Qq ",target) #define get_package_is_updated_command(target) yon_char_append("pacman -Qu ",target) #define unload_command(target) yon_char_append("ubmunload ",target) +#define pacman_update_command "pacman -Sy" #define install_command(target) yon_char_append("pacman -Sy --noconfirm ",target) #define remove_command(target) yon_char_append("pacman -R --noconfirm ",target) @@ -210,6 +211,7 @@ typedef struct { GtkWidget *DependencesTree; GtkWidget *CancelButton; GtkWidget *AcceptButton; + GtkWidget *DependencesFrame; GtkCellRenderer *ChooseCell; GtkListStore *liststore1; @@ -246,6 +248,8 @@ dialog_window *yon_dialog_window_new(); void on_module_install_accept(GtkWidget *, dictionary *dict); void on_package_install_accept(GtkWidget *, dictionary *dict); +void on_module_remove_accept(GtkWidget *, dictionary *dict); +void on_package_remove_accept(GtkWidget *, dictionary *dict); void on_module_remove_done(GtkWidget *self, int state, kernels_tab *tab); void on_module_install_clicked(GtkWidget *,dictionary *dict); diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 7fc60dc..7df69c4 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -77,4 +77,16 @@ #define LAUNCH_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to launch")," ",target," ",_("for boot?\n\nChanges will be applied after system restart"),NULL) #define UPDATE_MODULE_LABEL _("Update module") -#define UPDATE_PACKAGE_LABEL _("Update package") \ No newline at end of file +#define UPDATE_PACKAGE_LABEL _("Update package") +#define INSTALL_MODULE_TITLE_LABEL _("Install kernel module") +#define INSTALL_PACKAGE_TITLE_LABEL _("Install kernel package") +#define REMOVE_MODULE_TITLE_LABEL _("Remove kernel module") +#define REMOVE_PACKAGE_TITLE_LABEL _("Remove kernel package") +#define UPDATE_MODULE_TITLE_LABEL _("Update kernel module") +#define UPDATE_PACKAGE_TITLE_LABEL _("Update kernel package") +#define INSTALL_ADDITION_MODULE_TITLE_LABEL _("Install addition module") +#define INSTALL_ADDITION_PACKAGE_TITLE_LABEL _("Install addition package") +#define REMOVE_ADDITION_MODULE_TITLE_LABEL _("Remove addition module") +#define REMOVE_ADDITION_PACKAGE_TITLE_LABEL _("Remove addition package") +#define UPDATE_ADDITION_MODULE_TITLE_LABEL _("Update addition module") +#define UPDATE_ADDITION_PACKAGE_TITLE_LABEL _("Update addition package") diff --git a/ubl-settings-kernel-dialog.glade b/ubl-settings-kernel-dialog.glade index 34d0add..3044e7f 100644 --- a/ubl-settings-kernel-dialog.glade +++ b/ubl-settings-kernel-dialog.glade @@ -15,7 +15,6 @@ 400 - 200 False True com.ublinux.ubl-settings-repomanager @@ -57,6 +56,7 @@ True False label + True 0 @@ -67,7 +67,7 @@ - False + True True 0 @@ -80,7 +80,7 @@ - + True False 0.019999999552965164 @@ -166,7 +166,6 @@ True False - True True diff --git a/ubl-settings-kernel.pot b/ubl-settings-kernel.pot index 9251b21..6596ef3 100644 --- a/ubl-settings-kernel.pot +++ b/ubl-settings-kernel.pot @@ -281,3 +281,51 @@ msgstr "" #: source/ubl-strings.h:80 msgid "Update package" msgstr "" + +#: source/ubl-strings.h:81 +msgid "Install kernel module" +msgstr "" + +#: source/ubl-strings.h:82 +msgid "Install kernel package" +msgstr "" + +#: source/ubl-strings.h:83 +msgid "Remove kernel module" +msgstr "" + +#: source/ubl-strings.h:84 +msgid "Remove kernel package" +msgstr "" + +#: source/ubl-strings.h:85 +msgid "Update kernel module" +msgstr "" + +#: source/ubl-strings.h:86 +msgid "Update kernel package" +msgstr "" + +#: source/ubl-strings.h:87 +msgid "Install addition module" +msgstr "" + +#: source/ubl-strings.h:88 +msgid "Install addition package" +msgstr "" + +#: source/ubl-strings.h:89 +msgid "Remove addition module" +msgstr "" + +#: source/ubl-strings.h:90 +msgid "Remove addition package" +msgstr "" + +#: source/ubl-strings.h:91 +msgid "Update addition module" +msgstr "" + +#: source/ubl-strings.h:92 +msgid "Update addition package" +msgstr "" diff --git a/ubl-settings-kernel_ru.po b/ubl-settings-kernel_ru.po index 81dc4ac..f6b2b71 100644 --- a/ubl-settings-kernel_ru.po +++ b/ubl-settings-kernel_ru.po @@ -241,7 +241,9 @@ msgstr "Вы действительно хотите удалить из сис msgid "" "The kernel is the only one in the system. If you remove it, it will become " "impossible to boot. Do you really want to remove" -msgstr "Ядро является единственным в системе. При удалении загрузка станет невозможна. Вы действительно хотите удалить" +msgstr "" +"Ядро является единственным в системе. При удалении загрузка станет " +"невозможна. Вы действительно хотите удалить" #: source/ubl-strings.h:70 msgid "Are you sure want to remove kernel package" @@ -288,3 +290,53 @@ msgstr "Обновить модуль" #: source/ubl-strings.h:80 msgid "Update package" msgstr "Обновить пакет" + +#: source/ubl-strings.h:81 +msgid "Install kernel module" +msgstr "Установить модуль ядра" + +#: source/ubl-strings.h:82 +msgid "Install kernel package" +msgstr "Установить пакет с ядром" + +#: source/ubl-strings.h:83 +msgid "Remove kernel module" +msgstr "Удалить модуль с ядром" + +#: source/ubl-strings.h:84 +msgid "Remove kernel package" +msgstr "Удалить пакет с ядром" + +#: source/ubl-strings.h:85 +msgid "Update kernel module" +msgstr "Обновить модуль с ядром" + +#: source/ubl-strings.h:86 +msgid "Update kernel package" +msgstr "Обновить пакет с ядром" + +#: source/ubl-strings.h:87 +msgid "Install addition module" +msgstr "Установить модуль с дополнением" + +#: source/ubl-strings.h:88 +msgid "Install addition package" +msgstr "Установить пакет с дополнением" + +#: source/ubl-strings.h:89 +msgid "Remove addition module" +msgstr "Удалить модуль с дополнением" + +#: source/ubl-strings.h:90 +msgid "Remove addition package" +msgstr "Удалить пакет с дополнением" + +#: source/ubl-strings.h:91 +#, fuzzy +msgid "Update addition module" +msgstr "Обновить модуль с дополнением" + +#: source/ubl-strings.h:92 +#, fuzzy +msgid "Update addition package" +msgstr "Обновить пакет с дополнением"