From 1c49013ebc6823519b0148fdad0b81b27873679a Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 29 Nov 2024 18:18:34 +0600 Subject: [PATCH] buttons are unsensitive when terminal is busy --- source/ubl-settings-kernel.c | 40 ++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index de97a07..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; } @@ -1227,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);