From 91bb40e5ddc2528e7f5592802c61135ab5ea4726 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 8 Nov 2024 17:38:47 +0600 Subject: [PATCH] Fixes --- kernel-list-addon.csv | 2 +- source/ubl-settings-kernel.c | 101 ++++++++++++++++++++++------------- source/ubl-settings-kernel.h | 3 +- source/ubl-strings.h | 3 ++ ubl-settings-kernel.glade | 3 +- 5 files changed, 73 insertions(+), 39 deletions(-) diff --git a/kernel-list-addon.csv b/kernel-list-addon.csv index 679fb38..a4b3bf7 100644 --- a/kernel-list-addon.csv +++ b/kernel-list-addon.csv @@ -1,5 +1,5 @@ NAME;PAСKAGE_UBM;PAСKAGE;DESCRIPTION -Linux 5.15 headers;ubm-001-linux515-headers;linux515-headers;The Linux kernel headers v5.15 +Linux 5.15 headers;ubm-002-linux515-headers;linux515-headers;The Linux kernel headers v5.15 Linux 5.15 Docs;ubm-003-linux515-docs;linux515-docs;The Linux kernel docs v5.15 Linux 5.15 DKMS modules;ubm-linux515-dkms;linux515-dkms;The Linux kernel DKMS modules v5.15 : v4l2loopback, r8168-8136, rtl88x2bu, r8125, rtl8192eu Linux 6.1 headers;ubm-002-linux61-headers;linux61-headers;The Linux kernel headers v6.1 diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index b7c298e..16ced46 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -204,11 +204,16 @@ int yon_tag_add(GtkBox *target,char *tag_label, char *tag_style, char *icon_name return 0; } -gboolean on_command_execute_success(GtkWidget *,gint,main_window *widgets){ - gtk_revealer_set_transition_type(GTK_REVEALER(widgets->MainRevealer),GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN); - // gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->MainRevealer),0); - // gtk_widget_hide(widgets->MainRevealer); - yon_interface_update(widgets); +gboolean on_command_execute_success(GtkWidget *,gint status,main_window *widgets){ + if (!status){ + gtk_revealer_set_transition_type(GTK_REVEALER(widgets->MainRevealer),GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN); + // gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->MainRevealer),0); + // gtk_widget_hide(widgets->MainRevealer); + yon_ubl_status_box_render(OPERATION_SUCCESS_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + yon_interface_update(widgets); + } else { + yon_ubl_status_box_render(OPERATION_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + } return G_SOURCE_REMOVE; } @@ -241,7 +246,7 @@ void *yon_command_execute_async(char *command,main_window *widgets){ // gtk_widget_show(widgets->MainRevealer); // gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->MainRevealer),1); gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalRevealer),0); - yon_terminal_integrated_start(widgets->InstallTerminal,command); + 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); gdk_threads_add_timeout(500,(GSourceFunc)yon_terminal_get_progress,widgets); @@ -289,17 +294,17 @@ dialog_window *yon_dialog_window_new(){ return window; } -void on_module_install_clicked(GtkWidget *,dictionary *dict){ - // main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); +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 = MODULE_INSTALL_CONFIRMATION_LABEL(tab->name); - dialog_window *window = yon_dialog_window_new(); - g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_install_accept),dict); - - 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))){ + dialog_window *window = yon_dialog_window_new(); + g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_install_accept),dict); + 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; @@ -315,35 +320,59 @@ void on_module_install_clicked(GtkWidget *,dictionary *dict){ gtk_list_store_set(window->liststore1,&iter,0,1,1,tab->module_requirements[i],-1); } yon_char_parsed_free(additions,size); + } else { + + dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); + data->action_text = MODULE_INSTALL_CONFIRMATION_LABEL(tab->name); + data->function = NULL; + data->data = NULL; + if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){ + char *command = install_command(tab->module); + yon_command_execute_async(command,widgets); + tab->module_installed=0; + } + } } -void on_package_install_clicked(GtkWidget *,dictionary *dict){ - // main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); +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 = PACKAGE_INSTALL_CONFIRMATION_LABEL(tab->name); - dialog_window *window = yon_dialog_window_new(); - g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_install_accept),dict); + char *action_text = MODULE_INSTALL_CONFIRMATION_LABEL(tab->name); + if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ + dialog_window *window = yon_dialog_window_new(); + g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_install_accept),dict); - 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); + 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;ipackage_requirements_size;i++){ - gtk_list_store_append(window->liststore1,&iter); - for (int j=1;jpackage_requirements[i])) - gtk_list_store_set(window->liststore1,&iter,2,parsed[3],-1); - yon_char_parsed_free(parsed,cur_size); + int size; + config_str additions = yon_resource_open_file(kernels_addon_path,&size); + GtkTreeIter iter; + for (int i=0;ipackage_requirements_size;i++){ + gtk_list_store_append(window->liststore1,&iter); + for (int j=1;jpackage_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->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)); + data->action_text = MODULE_INSTALL_CONFIRMATION_LABEL(tab->name); + data->function = NULL; + data->data = NULL; + if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){ + char *command = install_command(tab->package); + yon_command_execute_async(command,widgets); + tab->module_installed=0; + } + } } void on_module_remove_clicked(GtkWidget *self,dictionary *dict){ diff --git a/source/ubl-settings-kernel.h b/source/ubl-settings-kernel.h index d6c7a4f..3d8b5d0 100644 --- a/source/ubl-settings-kernel.h +++ b/source/ubl-settings-kernel.h @@ -51,7 +51,8 @@ #define remove_command(target) yon_char_append("pacman -R --noconfirm ",target) #define get_active_kernel_command "cat /usr/lib/modules/$(uname -r)/pkgbase" -#define get_installed_package "cat /usr/lib/modules/*/pkgbase" +#define get_installed_kernel_packages_command "cat /usr/lib/modules/*/pkgbase" +#define get_installed_kernel_modules_command "cat /memory/data/from/0/ublinux-data/module/*linux*" #define build_command(target,filename,debug_bool,drivers_bool) yon_char_unite("ubmkuird -l -n ",filename," -k ",(debug_bool)?"--addon ":"",(drivers_bool)?"-H ":"",target,NULL) diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 3142d41..98b9532 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -51,6 +51,9 @@ #define PACKAGE_TAB_LABEL _("Package") #define DESCTIPTION_TAB_LABEL _("Description") +#define OPERATION_SUCCESS_LABEL _("Terminal Operation success") +#define OPERATION_ERROR_LABEL _("Terminal operation failed") + #define MODULE_INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install kernel")," ",target,"?",NULL) #define PACKAGE_INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install package")," ",target,"?",NULL) #define MODULE_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to remove module")," ",target,"?",NULL) diff --git a/ubl-settings-kernel.glade b/ubl-settings-kernel.glade index 1622efa..794e83f 100644 --- a/ubl-settings-kernel.glade +++ b/ubl-settings-kernel.glade @@ -1,5 +1,5 @@ - + @@ -56,6 +56,7 @@ False end slide-up + True True