diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index eee2e4a..6d98a16 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -125,6 +125,41 @@ void on_config_custom_load(GtkWidget *,main_window *widgets){ } + void on_terminal_done(GtkWidget *, int state, GtkWidget *status_box){ + if (state) yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(status_box),"terminal_done",BUILD_SUCCESS_STATUS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + else yon_ubl_status_box_spawn_infinite(GTK_CONTAINER(status_box),"terminal_done",BUILD_FAILED_STATUS_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + } + + void yon_terminal_window_start(GtkWindow *parent_window, char *command){ + GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + GtkWidget *header = gtk_header_bar_new(); + GtkWidget *terminal = vte_terminal_new(); + GtkWidget *status_box = gtk_box_new(GTK_ORIENTATION_VERTICAL,5); + GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL,5); + GtkWidget *terminal_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); + GtkWidget *scroll = gtk_scrollbar_new(GTK_ORIENTATION_VERTICAL,gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(terminal))); + + gtk_window_set_titlebar(GTK_WINDOW(window),header); + gtk_container_add(GTK_CONTAINER(window),box); + gtk_box_pack_start(GTK_BOX(box),status_box,0,0,0); + gtk_box_pack_start(GTK_BOX(box),terminal_box,1,1,0); + gtk_box_pack_start(GTK_BOX(terminal_box),terminal,1,1,0); + gtk_box_pack_start(GTK_BOX(terminal_box),scroll,0,0,0); + gtk_widget_set_margin_bottom(terminal_box,5); + gtk_widget_set_margin_start(terminal_box,5); + gtk_widget_set_margin_end(terminal_box,5); + gtk_widget_show_all(window); + + vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal),-1); + + gtk_window_set_modal(GTK_WINDOW(window),1); + gtk_header_bar_set_show_close_button(GTK_HEADER_BAR(header),1); + gtk_window_set_title(GTK_WINDOW(window),gtk_window_get_title(parent_window)); + gtk_window_set_icon_name(GTK_WINDOW(window),gtk_window_get_icon_name(parent_window)); + g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(on_terminal_done), status_box); + yon_terminal_integrated_start(terminal,command); + } + gboolean yon_tab_create_tags(kernels_tab *tab){ GList *list = gtk_container_get_children(GTK_CONTAINER(tab->install_tags_box)); for (guint i=0;iUpdateButton,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); + if (main_config.kernel_tabs){ + 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); + if (main_config.addition_tabs){ + 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; } @@ -1148,7 +1187,7 @@ void on_build_execute(GtkWidget *, dictionary *dict){ char *target = (char*)gtk_combo_box_get_active_id(GTK_COMBO_BOX(window->KernelVersionCombo)); char *filename = (char*)gtk_entry_get_text(GTK_ENTRY(window->FilenameEntry)); char *command = build_command(target,filename,debug,drivers); - yon_terminal_window_launch(GTK_WINDOW(widgets->Window),yon_debug_output("%s\n",command)); + yon_terminal_window_start(GTK_WINDOW(widgets->Window),yon_debug_output("%s\n",command)); gtk_widget_destroy(window->window); } @@ -1296,7 +1335,7 @@ 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_terminal_integrated_start(widgets->InstallTerminal,pacman_update_command); } yon_load_proceed(YON_CONFIG_LOCAL); } diff --git a/source/ubl-settings-kernel.h b/source/ubl-settings-kernel.h index 0d96a86..bc991bc 100644 --- a/source/ubl-settings-kernel.h +++ b/source/ubl-settings-kernel.h @@ -236,6 +236,9 @@ void on_config_local_load(GtkWidget *, main_window *widgets); void on_config_global_load(GtkWidget *, main_window *widgets); void on_config_custom_load(GtkWidget *,main_window *widgets); +void on_terminal_done(GtkWidget *, int state, GtkWidget *status_box); +void yon_terminal_window_start(GtkWindow *parent_window, char *command); + void config_init(); void yon_main_window_complete(main_window *widgets); diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 7df69c4..2bd4d24 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -90,3 +90,5 @@ #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") +#define BUILD_SUCCESS_STATUS_LABEL _("Building has succeeded") +#define BUILD_FAILED_STATUS_LABEL _("Building has failed") \ No newline at end of file diff --git a/ubl-settings-kernel.pot b/ubl-settings-kernel.pot index 6596ef3..b4c3280 100644 --- a/ubl-settings-kernel.pot +++ b/ubl-settings-kernel.pot @@ -329,3 +329,11 @@ msgstr "" #: source/ubl-strings.h:92 msgid "Update addition package" msgstr "" + +#: source/ubl-strings.h:93 +msgid "Building has succeeded" +msgstr "" + +#: source/ubl-strings.h:94 +msgid "Building has failed" +msgstr "" diff --git a/ubl-settings-kernel_ru.po b/ubl-settings-kernel_ru.po index f6b2b71..97d3e06 100644 --- a/ubl-settings-kernel_ru.po +++ b/ubl-settings-kernel_ru.po @@ -340,3 +340,11 @@ msgstr "Обновить модуль с дополнением" #, fuzzy msgid "Update addition package" msgstr "Обновить пакет с дополнением" + +#: source/ubl-strings.h:93 +msgid "Building has succeeded" +msgstr "Сборка прошла успешно" + +#: source/ubl-strings.h:94 +msgid "Building has failed" +msgstr "Ошибка сборки ядра"