From 19c3d26f00aee02c447707f4e8db597f9d9a22a6 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 4 Dec 2025 17:32:49 +0600 Subject: [PATCH] Added pacman update dialog --- locale/ubl-settings-kernel.pot | 3 +++ locale/ubl-settings-kernel_ru.po | 4 ++++ source/ubl-settings-kernel.c | 22 +++++++++++++++++----- source/ubl-settings-kernel.h | 7 +++++-- source/ubl-strings.h | 3 ++- 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/locale/ubl-settings-kernel.pot b/locale/ubl-settings-kernel.pot index 13ac55b..1849c6e 100644 --- a/locale/ubl-settings-kernel.pot +++ b/locale/ubl-settings-kernel.pot @@ -360,3 +360,6 @@ msgid "" "the module!" msgstr "" +#: source/ubl-strings.h:98 +msgid "Update the repository databases?" +msgstr "" diff --git a/locale/ubl-settings-kernel_ru.po b/locale/ubl-settings-kernel_ru.po index 5ce5d67..fac8cdc 100644 --- a/locale/ubl-settings-kernel_ru.po +++ b/locale/ubl-settings-kernel_ru.po @@ -374,3 +374,7 @@ msgstr "" msgid "Add drivers for current hardware components only" msgstr "Добавить драйвера только текущих аппаратных компонентов" + +#: source/ubl-strings.h:98 +msgid "Update the repository databases?" +msgstr "Обновить базы данных репозитория?" \ No newline at end of file diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 1657a0d..15028f1 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -1547,6 +1547,11 @@ void on_paned_position_changed(GtkWidget *, GdkEvent*,main_window *widgets){ gtk_paned_set_position(GTK_PANED(widgets->TerminalPaned),size-40); } +void on_database_update(void *,void *widgets){ + yon_terminal_window_launch(GTK_WINDOW(((main_window*)widgets)->Window),pacman_update_command,yon_char_get_localised_from_lib(SUCCESS_LABEL),yon_char_get_localised_from_lib(FAIL_LABEL)); +} + + /**yon_main_window_complete(main_window *widgets) * [EN] * @@ -1621,7 +1626,7 @@ void yon_main_window_complete(main_window *widgets){ if (getuid()){ on_update_clicked(NULL,widgets); gtk_widget_set_sensitive(widgets->BuildingButton,0); - } else { + } GdkRGBA rgba; vte_terminal_get_color_background_for_draw(VTE_TERMINAL(widgets->InstallTerminal),&rgba); vte_terminal_set_color_cursor(VTE_TERMINAL(widgets->InstallTerminal),&rgba); @@ -1630,11 +1635,18 @@ void yon_main_window_complete(main_window *widgets){ vte_terminal_set_size(VTE_TERMINAL(widgets->InstallTerminal),columns,20); - yon_save_window_set_postsave_function(on_save_done,widgets); + if (system(yon_check_database_command)){ + dialog_confirmation_data *data = yon_confirmation_dialog_data_new(); + data->action_text=DATABASE_UNACCESSIBLE_LABEL; + data->function = on_database_update; + data->data = widgets; + yon_confirmation_dialog_call(widgets->HeadOverlay,data); + } - gtk_button_clicked(GTK_BUTTON(widgets->MoreButton)); - yon_terminal_integrated_start(widgets->InstallTerminal,pacman_update_command); - } + // gtk_button_clicked(GTK_BUTTON(widgets->MoreButton)); + // yon_terminal_integrated_start(widgets->InstallTerminal,pacman_update_command); + + yon_save_window_set_postsave_function(on_save_done,widgets); yon_gtk_widget_set_scroll_window_for_scroll(gtk_widget_get_parent(widgets->InstallTerminal),GTK_SCROLLBAR(widgets->TerminalScroll)); } yon_load_proceed(YON_CONFIG_LOCAL); diff --git a/source/ubl-settings-kernel.h b/source/ubl-settings-kernel.h index 2367d8c..8ba58cb 100644 --- a/source/ubl-settings-kernel.h +++ b/source/ubl-settings-kernel.h @@ -48,12 +48,14 @@ #define get_kernel_changelog_command(target) yon_char_unite("find /usr/lib/modules/ -maxdepth 2 -type f -iname \"pkgbase\" -exec grep -il \"",target,"\" {} + | xargs dirname | xargs -I {} cat \"{}/changelog\"", NULL) #define get_package_info_command(target) yon_char_append("pacman -Si ",target) #define get_package_is_installed_command(target) yon_char_append("pacman -Qq ",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) #define get_dependent_command(target) yon_char_append("pactree -rl ",target) #define check_pactree_exist_command "which pactree > /dev/null 2>&1" +#define yon_check_database_command "pacman -Sqs >/dev/null" + +#define pacman_update_command "pacsync --updated" #define get_active_kernel_command "cat /usr/lib/modules/$(uname -r)/pkgbase" @@ -319,4 +321,5 @@ void on_terminal_cancel(GtkWidget *,main_window *widgets); void on_pacman_db_unlock(void); void on_paned_position_changed(GtkWidget *, GdkEvent*,main_window *widgets); -gboolean on_terminal_check_progress(main_window *widgets); \ No newline at end of file +gboolean on_terminal_check_progress(main_window *widgets); +void on_database_update(void *,void *widgets); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 2e39ad3..987466d 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -96,4 +96,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 KERNEL_PACKAGE_INSTALL_ATTENTION_LABEL _("Attention! If you work in sandbox mode, you must install the package with the module!") \ No newline at end of file +#define KERNEL_PACKAGE_INSTALL_ATTENTION_LABEL _("Attention! If you work in sandbox mode, you must install the package with the module!") +#define DATABASE_UNACCESSIBLE_LABEL _("Update the repository databases?")