Merge pull request 'master' (#46) from YanTheKaller/ubl-settings-kernel:master into master

Reviewed-on: #46
pull/79/head v2.4
Dmitry Razumov 1 year ago
commit c23633ae2a

@ -1,4 +1,4 @@
NAME;PAСKAGE_UBM;PAСKAGE;PAСKAGE_UBM_REQUIRED;PAСKAGE_REQUIRED;TAG;DESCRIPTION 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 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-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.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-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 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
1 NAME PAСKAGE_UBM PAСKAGE PAСKAGE_UBM_REQUIRED PAСKAGE_REQUIRED TAG DESCRIPTION
2 Linux 5.15 ubm-001-linux515 linux515 ubm-001-linux515-headers 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
3 Linux 6.1 ubm-001-linux61 linux61 ubm-001-linux61-headers 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
4 Linux 6.6 ubm-001-linux66 linux66 ubm-001-linux66-headers 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

@ -397,6 +397,24 @@ gboolean on_command_execute_success(GtkWidget *,gint status,main_window *widgets
} else { } else {
yon_ubl_status_box_render(OPERATION_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); 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; 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); gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->InstallationProgress),0);
vte_terminal_reset(VTE_TERMINAL(widgets->InstallTerminal),0,1); vte_terminal_reset(VTE_TERMINAL(widgets->InstallTerminal),0,1);
yon_terminal_integrated_start_shell(widgets->InstallTerminal,yon_debug_output("%s\n",command),NULL,NULL); 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)); // yon_terminal_integrated_start(widgets->InstallTerminal,yon_debug_output("%s\n",command));
glong columns = vte_terminal_get_column_count(VTE_TERMINAL(widgets->InstallTerminal)); glong columns = vte_terminal_get_column_count(VTE_TERMINAL(widgets->InstallTerminal));
vte_terminal_set_size(VTE_TERMINAL(widgets->InstallTerminal),columns,20); 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; main_config.progress_active=1;
g_mutex_unlock(&main_config.progress_mutex); g_mutex_unlock(&main_config.progress_mutex);
gdk_threads_add_timeout(500,(GSourceFunc)yon_terminal_get_progress,widgets); 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; return NULL;
} }
@ -508,6 +544,62 @@ void on_package_install_accept(GtkWidget *, dictionary *dict){
on_subwindow_close(window->Window); 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(){ dialog_window *yon_dialog_window_new(){
GtkBuilder *builder = gtk_builder_new_from_resource(glade_dialog_path); GtkBuilder *builder = gtk_builder_new_from_resource(glade_dialog_path);
dialog_window *window = malloc(sizeof(dialog_window)); 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->DependencesTree = yon_gtk_builder_get_widget(builder,"DependencesTree");
window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton"); window->CancelButton = yon_gtk_builder_get_widget(builder,"CancelButton");
window->AcceptButton = yon_gtk_builder_get_widget(builder,"AcceptButton"); 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->ChooseCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ChooseCell"));
window->liststore1 = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1")); 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); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL);
@ -528,18 +621,37 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*); kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*);
char *action_text = NULL; 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(); 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); 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); 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_label_set_text(GTK_LABEL(window->TopicLabel),action_text);
gtk_widget_show(window->Window); gtk_widget_show(window->Window);
yon_dictionary_add_or_create_if_exists_with_data(dict,"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; int size;
config_str additions = yon_resource_open_file(kernels_addon_path,&size); config_str additions = yon_resource_open_file(kernels_addon_path,&size);
GtkTreeIter iter; GtkTreeIter iter;
@ -555,21 +667,6 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){
gtk_list_store_set(window->liststore1,&iter,0,1,1,tab->module_requirements[i],-1); gtk_list_store_set(window->liststore1,&iter,0,1,1,tab->module_requirements[i],-1);
} }
yon_char_parsed_free(additions,size); yon_char_parsed_free(additions,size);
} 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;
}
} }
} }
@ -577,18 +674,36 @@ void on_package_install_clicked(GtkWidget *self,dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*); kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*);
char *action_text = NULL; 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(); 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); 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_label_set_text(GTK_LABEL(window->TopicLabel),action_text);
gtk_widget_show(window->Window); gtk_widget_show(window->Window);
yon_dictionary_add_or_create_if_exists_with_data(dict,"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; int size;
config_str additions = yon_resource_open_file(kernels_addon_path,&size); config_str additions = yon_resource_open_file(kernels_addon_path,&size);
GtkTreeIter iter; 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); gtk_list_store_set(window->liststore1,&iter,0,1,1,tab->package_requirements[i],-1);
} }
yon_char_parsed_free(additions,size); 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; } 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){ 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){ } 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; int size;
data->data = NULL; config_str additions = yon_resource_open_file(kernels_addon_path,&size);
if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){ GtkTreeIter iter;
char *target = yon_package_string_set(tab->module); for (int i=0;i<tab->module_requirements_size;i++){
char *command = remove_command(target); if (!system(get_package_is_installed_command(tab->module))){
char *command_unload = unload_command(target); gtk_list_store_append(window->liststore1,&iter);
if (system(yon_debug_output("%s\n",command_unload))){}; for (int j=1;j<size;j++){
g_signal_connect(G_OBJECT(widgets->InstallTerminal),"child-exited",G_CALLBACK(on_module_remove_done),tab); int cur_size;
yon_command_execute_async(command,widgets); config_str parsed = yon_char_parse(additions[j],&cur_size,";");
tab->module_installed=0; if (!strcmp(parsed[1],tab->module_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; } 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){ 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){ } 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; gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_PACKAGE_TITLE_LABEL);
int resp = yon_confirmation_dialog_call(self,data); int size;
if (resp == GTK_RESPONSE_ACCEPT){ config_str additions = yon_resource_open_file(kernels_addon_path,&size);
char *target = yon_package_string_set(tab->package); GtkTreeIter iter;
char *command = remove_command(target); for (int i=0;i<tab->module_requirements_size;i++){
yon_command_execute_async(command,widgets); if (!system(get_package_is_installed_command(tab->package))){
tab->package_installed=0; gtk_list_store_append(window->liststore1,&iter);
for (int j=1;j<size;j++){
int cur_size;
config_str parsed = yon_char_parse(additions[j],&cur_size,";");
if (!strcmp(parsed[1],tab->module_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->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->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->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->SaveMenuItem),"activate",G_CALLBACK(on_config_save),widgets);
g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(on_config_global_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); on_update_clicked(NULL,widgets);
yon_save_window_set_postsave_function(on_save_done,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); yon_load_proceed(YON_CONFIG_LOCAL);
} }

@ -48,6 +48,7 @@
#define get_package_is_installed_command(target) yon_char_append("pacman -Qq ",target) #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 get_package_is_updated_command(target) yon_char_append("pacman -Qu ",target)
#define unload_command(target) yon_char_append("ubmunload ",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 install_command(target) yon_char_append("pacman -Sy --noconfirm ",target)
#define remove_command(target) yon_char_append("pacman -R --noconfirm ",target) #define remove_command(target) yon_char_append("pacman -R --noconfirm ",target)
@ -210,6 +211,7 @@ typedef struct {
GtkWidget *DependencesTree; GtkWidget *DependencesTree;
GtkWidget *CancelButton; GtkWidget *CancelButton;
GtkWidget *AcceptButton; GtkWidget *AcceptButton;
GtkWidget *DependencesFrame;
GtkCellRenderer *ChooseCell; GtkCellRenderer *ChooseCell;
GtkListStore *liststore1; GtkListStore *liststore1;
@ -246,6 +248,8 @@ dialog_window *yon_dialog_window_new();
void on_module_install_accept(GtkWidget *, dictionary *dict); void on_module_install_accept(GtkWidget *, dictionary *dict);
void on_package_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_remove_done(GtkWidget *self, int state, kernels_tab *tab);
void on_module_install_clicked(GtkWidget *,dictionary *dict); void on_module_install_clicked(GtkWidget *,dictionary *dict);

@ -78,3 +78,15 @@
#define UPDATE_MODULE_LABEL _("Update module") #define UPDATE_MODULE_LABEL _("Update module")
#define UPDATE_PACKAGE_LABEL _("Update package") #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")

@ -15,7 +15,6 @@
</object> </object>
<object class="GtkApplicationWindow" id="MainWindow"> <object class="GtkApplicationWindow" id="MainWindow">
<property name="width-request">400</property> <property name="width-request">400</property>
<property name="height-request">200</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="modal">True</property> <property name="modal">True</property>
<property name="icon-name">com.ublinux.ubl-settings-repomanager</property> <property name="icon-name">com.ublinux.ubl-settings-repomanager</property>
@ -57,6 +56,7 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label" translatable="yes">label</property> <property name="label" translatable="yes">label</property>
<property name="wrap">True</property>
<property name="xalign">0</property> <property name="xalign">0</property>
</object> </object>
<packing> <packing>
@ -67,7 +67,7 @@
</child> </child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">0</property> <property name="position">0</property>
</packing> </packing>
@ -80,7 +80,7 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkFrame"> <object class="GtkFrame" id="DependencesFrame">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="label-xalign">0.019999999552965164</property> <property name="label-xalign">0.019999999552965164</property>
@ -166,7 +166,6 @@
<object class="GtkHeaderBar" id="SettingsBar2"> <object class="GtkHeaderBar" id="SettingsBar2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="show-close-button">True</property>
<child type="title"> <child type="title">
<object class="GtkLabel" id="HeadLabel"> <object class="GtkLabel" id="HeadLabel">
<property name="visible">True</property> <property name="visible">True</property>

@ -281,3 +281,51 @@ msgstr ""
#: source/ubl-strings.h:80 #: source/ubl-strings.h:80
msgid "Update package" msgid "Update package"
msgstr "" 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 ""

@ -241,7 +241,9 @@ msgstr "Вы действительно хотите удалить из сис
msgid "" msgid ""
"The kernel is the only one in the system. If you remove it, it will become " "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" "impossible to boot. Do you really want to remove"
msgstr "Ядро является единственным в системе. При удалении загрузка станет невозможна. Вы действительно хотите удалить" msgstr ""
"Ядро является единственным в системе. При удалении загрузка станет "
"невозможна. Вы действительно хотите удалить"
#: source/ubl-strings.h:70 #: source/ubl-strings.h:70
msgid "Are you sure want to remove kernel package" msgid "Are you sure want to remove kernel package"
@ -288,3 +290,53 @@ msgstr "Обновить модуль"
#: source/ubl-strings.h:80 #: source/ubl-strings.h:80
msgid "Update package" msgid "Update package"
msgstr "Обновить пакет" 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 "Обновить пакет с дополнением"

Loading…
Cancel
Save