From dc61998f4a95686adaa1252900812d093bc1aa1e Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 21 Nov 2024 12:43:18 +0600 Subject: [PATCH 01/11] Terminal has been moved from overlay to paned; Fixed progress bar length --- source/ubl-settings-kernel.c | 46 ++++++- source/ubl-settings-kernel.h | 3 +- source/ubl-strings.h | 1 + ubl-settings-kernel.glade | 243 +++++++++++++++++++++-------------- ubl-settings-kernel.pot | 45 ++++--- ubl-settings-kernel_ru.po | 50 ++++--- 6 files changed, 249 insertions(+), 139 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 9de6081..53dfe5c 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -410,7 +410,8 @@ void on_module_install_accept(GtkWidget *, dictionary *dict){ } } char *command = install_command(modules_to_install); - yon_command_execute_async(command,widgets); + char *command_with_unload = yon_char_unite(unload_command(modules_to_install),"; ",command,NULL); + yon_command_execute_async(command_with_unload,widgets); tab->module_installed=1; free(dict->first->next->next); dict->first->next->next=NULL; @@ -971,11 +972,43 @@ void on_terminal_revealer_open(GtkWidget *, main_window *widgets){ int opened = gtk_revealer_get_child_revealed(GTK_REVEALER(widgets->TerminalRevealer)); gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalRevealer),!opened); switch (opened){ - case 0: { + case 0: { // opens gtk_revealer_set_transition_type(GTK_REVEALER(widgets->TerminalRevealer),GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP); + gtk_button_set_label(GTK_BUTTON(widgets->MoreButton),LESS_LABEL); + + g_object_ref(widgets->MainNotebook); + gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(widgets->MainNotebook)),widgets->MainNotebook); + gtk_paned_add1(GTK_PANED(widgets->TerminalPaned),widgets->MainNotebook); + + int pos; + if (yon_window_config_get_parameter("settings","paned_pos",&pos,YON_TYPE_INT)) { + gtk_paned_set_position(GTK_PANED(widgets->TerminalPaned),pos); + } + + gtk_widget_show(widgets->TerminalPaned); + gtk_widget_show(widgets->MainNotebook); + + + } break; - case 1: { + case 1: { //closes gtk_revealer_set_transition_type(GTK_REVEALER(widgets->TerminalRevealer),GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN); + gtk_button_set_label(GTK_BUTTON(widgets->MoreButton),MORE_LABEL); + + int pos = gtk_paned_get_position(GTK_PANED(widgets->TerminalPaned)); + yon_window_config_add_instant_parameter("paned_pos","settings",&pos,YON_TYPE_INT); + + GValue val = G_VALUE_INIT; + g_object_get_property(G_OBJECT(widgets->TerminalPaned),"max-position",&val); + gtk_paned_set_position(GTK_PANED(widgets->TerminalPaned),g_value_get_int(&val)); + g_value_unset(&val); + + g_object_ref(widgets->MainNotebook); + gtk_container_remove(GTK_CONTAINER(widgets->TerminalPaned),widgets->MainNotebook); + gtk_box_pack_start(GTK_BOX(gtk_widget_get_parent(widgets->TerminalPaned)),widgets->MainNotebook,1,1,0); + + gtk_box_reorder_child(GTK_BOX(gtk_widget_get_parent(widgets->MainNotebook)),widgets->MainNotebook,0); + gtk_widget_hide(widgets->TerminalPaned); } break; } } @@ -1006,7 +1039,7 @@ void yon_main_window_complete(main_window *widgets){ widgets->InstallationProgress = yon_gtk_builder_get_widget(builder, "InstallationProgress"); widgets->InstallTerminal = yon_gtk_builder_get_widget(builder, "InstallTerminal"); widgets->TerminalRevealer = yon_gtk_builder_get_widget(builder, "TerminalRevealer"); - widgets->TerminalOverlay = yon_gtk_builder_get_widget(builder, "TerminalOverlay"); + widgets->TerminalPaned = yon_gtk_builder_get_widget(builder, "TerminalPaned"); widgets->TerminalScroll = yon_gtk_builder_get_widget(builder, "TerminalScroll"); widgets->KernelsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"KernelsList")); widgets->AdditionsList = GTK_LIST_STORE(gtk_builder_get_object(builder,"AdditionsList")); @@ -1047,7 +1080,8 @@ void yon_main_window_complete(main_window *widgets){ glong columns = vte_terminal_get_column_count(VTE_TERMINAL(widgets->InstallTerminal)); vte_terminal_set_size(VTE_TERMINAL(widgets->InstallTerminal),columns,20); - gtk_overlay_add_overlay(GTK_OVERLAY(widgets->TerminalOverlay),widgets->TerminalRevealer); + + gtk_paned_add2(GTK_PANED(widgets->TerminalPaned),widgets->TerminalRevealer); yon_interface_update(widgets); yon_save_window_set_postsave_function(on_save_done,widgets); @@ -1079,4 +1113,4 @@ int main(int argc, char *argv[]){ } gtk_main(); return 0; -} \ No newline at end of file +} diff --git a/source/ubl-settings-kernel.h b/source/ubl-settings-kernel.h index 85bb6c5..a3b4f63 100644 --- a/source/ubl-settings-kernel.h +++ b/source/ubl-settings-kernel.h @@ -47,6 +47,7 @@ #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 get_package_is_updated_command(target) yon_char_append("pacman -Qu ",target) +#define unload_command(target) yon_char_append("ubmunload ",target) #define install_command(target) yon_char_append("pacman -Sy --noconfirm ",target) #define remove_command(target) yon_char_append("pacman -R --noconfirm ",target) @@ -114,7 +115,7 @@ typedef struct { GtkWidget *InstallTerminal; GtkWidget *InstallationProgress; GtkWidget *MoreButton; - GtkWidget *TerminalOverlay; + GtkWidget *TerminalPaned; GtkWidget *TerminalScroll; } main_window; diff --git a/source/ubl-strings.h b/source/ubl-strings.h index ceb7e3f..10680ae 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -44,6 +44,7 @@ #define UPDATE_LABEL _("Update") #define OPE_INFO_LABEL _("Open package information") #define MORE_LABEL _("More") +#define LESS_LABEL _("Hide") #define ACCEPT_LABEL _("Accept") #define WARNING_TITLE_LABEL _("Warning") diff --git a/ubl-settings-kernel.glade b/ubl-settings-kernel.glade index 42b159d..2909662 100644 --- a/ubl-settings-kernel.glade +++ b/ubl-settings-kernel.glade @@ -57,40 +57,62 @@ False end slide-up + 0 - + True False + 0 + in - - True - False - True - adjustment1 - natural - UTF-8 - True - True - False - - - True - True - 0 - - - - + True False - vertical - adjustment1 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + True + adjustment1 + natural + UTF-8 + True + True + False + + + True + True + 0 + + + + + True + False + vertical + adjustment1 + + + False + True + 1 + + + + - - False - True - 1 - + + + @@ -187,9 +209,11 @@ - + True False + vertical + 5 True @@ -214,6 +238,7 @@ True False + 5 5 @@ -250,6 +275,8 @@ True True + 5 + 5 5 5 5 @@ -258,6 +285,7 @@ True False + 5 5 @@ -288,107 +316,128 @@ - -1 + True + True + 0 + + + + + True + vertical + 250 + True + + + + + + + + + True + True + 1 - - - True - True - 1 - - - - - True - True - 0 - - - - - True - False - end - slide-up - True - - - True - False - vertical - 5 - + True False - 0 - in + end + slide-up + True - + True False - 5 - 5 - 5 - 5 + vertical + 5 - + True False - 5 + 0 + in - + True False - center + 5 + 5 + 5 + 5 + + + True + False + 5 + + + True + False + center + + + True + True + 0 + + + + + More + True + True + True + + + False + True + 2 + + + + - - True - True - 0 - - - - More - True - True - True - - - False - True - 2 - + + + + False + True + 1 + + - - - + False True - 1 + 2 - + + True + True + 1 + - - False + True True - 1 + 0 diff --git a/ubl-settings-kernel.pot b/ubl-settings-kernel.pot index b2621d6..9e759ff 100644 --- a/ubl-settings-kernel.pot +++ b/ubl-settings-kernel.pot @@ -162,67 +162,78 @@ msgstr "" msgid "More" msgstr "" -#: source/ubl-strings.h:48 -msgid "Accept" +#: source/ubl-strings.h:47 +msgid "Hide" msgstr "" #: source/ubl-strings.h:49 -msgid "Warning" +msgid "Accept" msgstr "" #: source/ubl-strings.h:50 +msgid "Warning" +msgstr "" + +#: source/ubl-strings.h:51 msgid "Dependences" msgstr "" -#: source/ubl-strings.h:52 +#: source/ubl-strings.h:53 msgid "Module" msgstr "" -#: source/ubl-strings.h:53 +#: source/ubl-strings.h:54 msgid "Package" msgstr "" -#: source/ubl-strings.h:54 +#: source/ubl-strings.h:55 msgid "Description" msgstr "" -#: source/ubl-strings.h:56 +#: source/ubl-strings.h:57 +msgid "Kernel and additions listst are loading" +msgstr "" + +#: source/ubl-strings.h:59 msgid "Terminal operation success" msgstr "" -#: source/ubl-strings.h:57 +#: source/ubl-strings.h:60 msgid "Terminal operation failed" msgstr "" -#: source/ubl-strings.h:58 +#: source/ubl-strings.h:61 msgid "Terminal operation in process" msgstr "" -#: source/ubl-strings.h:58 -msgid "The package with the module has been removed, but the module is not disabled from the system, as it is used by other system programs. After rebooting, the module will be disabled and removed." +#: source/ubl-strings.h:62 +msgid "" +"The package with the module has been removed, but the module is not disabled " +"from the system, as it is used by other system programs. After rebooting, " +"the module will be disabled and removed." msgstr "" -#: source/ubl-strings.h:60 +#: source/ubl-strings.h:64 msgid "Are you sure want to install kernel" msgstr "" -#: source/ubl-strings.h:61 +#: source/ubl-strings.h:65 msgid "Are you sure want to install package" msgstr "" -#: source/ubl-strings.h:62 +#: source/ubl-strings.h:66 msgid "Are you sure want to remove module" msgstr "" -#: source/ubl-strings.h:63 +#: source/ubl-strings.h:67 msgid "Are you sure want to remove package" msgstr "" -#: source/ubl-strings.h:64 +#: source/ubl-strings.h:68 msgid "Are you sure want to launch" msgstr "" -#: source/ubl-strings.h:64 +#: source/ubl-strings.h:68 msgid "" "for boot?\n" "\n" diff --git a/ubl-settings-kernel_ru.po b/ubl-settings-kernel_ru.po index eeeff5a..8e92a22 100644 --- a/ubl-settings-kernel_ru.po +++ b/ubl-settings-kernel_ru.po @@ -163,67 +163,81 @@ msgstr "Открыть информацию о пакете" msgid "More" msgstr "Подробнее" -#: source/ubl-strings.h:48 +#: source/ubl-strings.h:47 +msgid "Hide" +msgstr "Скрыть" + +#: source/ubl-strings.h:49 msgid "Accept" msgstr "Принять" -#: source/ubl-strings.h:49 +#: source/ubl-strings.h:50 msgid "Warning" msgstr "Внимание" -#: source/ubl-strings.h:50 +#: source/ubl-strings.h:51 msgid "Dependences" msgstr "Зависимости" -#: source/ubl-strings.h:52 +#: source/ubl-strings.h:53 msgid "Module" msgstr "Модуль" -#: source/ubl-strings.h:53 +#: source/ubl-strings.h:54 msgid "Package" msgstr "Пакет" -#: source/ubl-strings.h:54 +#: source/ubl-strings.h:55 msgid "Description" msgstr "Описание" -#: source/ubl-strings.h:56 +#: source/ubl-strings.h:57 +msgid "Kernel and additions listst are loading" +msgstr "Список ядер и дополнений загружается" + +#: source/ubl-strings.h:59 msgid "Terminal operation success" msgstr "Операция терминала успешно завершена" -#: source/ubl-strings.h:57 +#: source/ubl-strings.h:60 msgid "Terminal operation failed" msgstr "Операция терминала завершена с ошибкой" -#: source/ubl-strings.h:58 +#: source/ubl-strings.h:61 msgid "Terminal operation in process" msgstr "Операция терминала в процессе выполнения" -#: source/ubl-strings.h:58 -msgid "The package with the module has been removed, but the module is not disabled from the system, as it is used by other system programs. After rebooting, the module will be disabled and removed." -msgstr "Пакет с модулем удалён, но модуль не отключен от системы, так как используется другими системными программами. После перезагрузки модуль будет отключен и удалён." +#: source/ubl-strings.h:62 +msgid "" +"The package with the module has been removed, but the module is not disabled " +"from the system, as it is used by other system programs. After rebooting, " +"the module will be disabled and removed." +msgstr "" +"Пакет с модулем удалён, но модуль не отключен от системы, так как " +"используется другими системными программами. После перезагрузки модуль будет " +"отключен и удалён." -#: source/ubl-strings.h:60 +#: source/ubl-strings.h:64 msgid "Are you sure want to install kernel" msgstr "Вы хотите установить в систему ядро" -#: source/ubl-strings.h:61 +#: source/ubl-strings.h:65 msgid "Are you sure want to install package" msgstr "Вы хотите установить в систему пакет с ядром" -#: source/ubl-strings.h:62 +#: source/ubl-strings.h:66 msgid "Are you sure want to remove module" msgstr "Вы действительно хотите удалить из системы пакет с модулем ядра" -#: source/ubl-strings.h:63 +#: source/ubl-strings.h:67 msgid "Are you sure want to remove package" msgstr "Вы действительно хотите удалить из системы пакет с ядром" -#: source/ubl-strings.h:64 +#: source/ubl-strings.h:68 msgid "Are you sure want to launch" msgstr "Выбрать ядро" -#: source/ubl-strings.h:64 +#: source/ubl-strings.h:68 msgid "" "for boot?\n" "\n" From 083dfa4066c4d8c9d2307e57b19c91f8ea94a591 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 22 Nov 2024 12:16:46 +0600 Subject: [PATCH 02/11] Tag align --- ubl-settings-kernel-additions-table-row.glade | 3 ++- ubl-settings-kernel-table-row.glade | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ubl-settings-kernel-additions-table-row.glade b/ubl-settings-kernel-additions-table-row.glade index 050cd4e..bff6294 100644 --- a/ubl-settings-kernel-additions-table-row.glade +++ b/ubl-settings-kernel-additions-table-row.glade @@ -1,5 +1,5 @@ - + @@ -161,6 +161,7 @@ True False + center 5 5 vertical diff --git a/ubl-settings-kernel-table-row.glade b/ubl-settings-kernel-table-row.glade index 466d954..cb13bd0 100644 --- a/ubl-settings-kernel-table-row.glade +++ b/ubl-settings-kernel-table-row.glade @@ -159,6 +159,7 @@ True False + center 5 5 vertical @@ -177,6 +178,7 @@ True False + center 5 5 vertical @@ -194,6 +196,7 @@ False + center 5 5 vertical From 1e29126ccbcbf187b9460a0278d3a798869fc541 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 22 Nov 2024 12:33:53 +0600 Subject: [PATCH 03/11] added debug output for building --- source/ubl-settings-kernel.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 53dfe5c..5c0a794 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -157,16 +157,12 @@ gboolean yon_tab_create_tags(kernels_tab *tab){ if(!getuid()){ if (boot_run&&!strcmp(boot_run[0],tab->package)){ yon_tag_add(GTK_BOX(tab->install_tags_box),RUNNING_LABEL,"tag_green",NULL); - gtk_widget_hide(tab->remove_module_button); - gtk_widget_hide(tab->remove_package_button); gtk_widget_hide(tab->update_module_button); gtk_widget_hide(tab->update_package_button); gtk_widget_hide(tab->launch_button); } else if (!yon_char_is_empty(launched)&&!strcmp(launched,tab->package)){ yon_tag_add(GTK_BOX(tab->install_tags_box),BOOT_RUN_LABEL,"tag_orange",NULL); gtk_widget_hide(tab->launch_button); - gtk_widget_hide(tab->remove_module_button); - gtk_widget_hide(tab->remove_package_button); gtk_widget_hide(tab->update_module_button); gtk_widget_hide(tab->update_package_button); } @@ -936,7 +932,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),command); + yon_terminal_window_launch(GTK_WINDOW(widgets->Window),yon_debug_output("%s\n",command)); gtk_widget_destroy(window->window); } From 8ab321359b88ef412fce30ec84ab1944a42daeb6 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 22 Nov 2024 12:40:28 +0600 Subject: [PATCH 04/11] fixed building command --- source/ubl-settings-kernel.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubl-settings-kernel.h b/source/ubl-settings-kernel.h index a3b4f63..c55fec5 100644 --- a/source/ubl-settings-kernel.h +++ b/source/ubl-settings-kernel.h @@ -56,7 +56,7 @@ #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) +#define build_command(target,filename,debug_bool,drivers_bool) yon_char_unite("ubmkuird -l -n ",filename," -k ",target, " ",(debug_bool)?"--addon ":"",(drivers_bool)?"-H":"",NULL) #define yon_config_get_custom_command(target) yon_char_unite("ubconfig --source ",target," get boot KERNEL_BOOT",NULL) #define config_get_local_command "ubconfig --source system get boot KERNEL_BOOT" From 58a861276d95579eeec18fb4c1242e929e0ca677 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 22 Nov 2024 13:51:38 +0600 Subject: [PATCH 05/11] Test fix for installation --- source/ubl-settings-kernel.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 5c0a794..857b686 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -406,8 +406,8 @@ void on_module_install_accept(GtkWidget *, dictionary *dict){ } } char *command = install_command(modules_to_install); - char *command_with_unload = yon_char_unite(unload_command(modules_to_install),"; ",command,NULL); - yon_command_execute_async(command_with_unload,widgets); + // char *command_with_unload = yon_char_unite(unload_command(modules_to_install),"; ",command,NULL); + yon_command_execute_async(command,widgets); tab->module_installed=1; free(dict->first->next->next); dict->first->next->next=NULL; From 6c3ca55bcd799c2f3a1e827a625f4480740887ea Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 22 Nov 2024 14:50:09 +0600 Subject: [PATCH 06/11] Crash fix --- source/ubl-settings-kernel.c | 14 ++++++++++---- ubl-settings-kernel.glade | 1 - 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 857b686..a0827c8 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -391,6 +391,8 @@ void on_module_install_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; @@ -406,11 +408,10 @@ void on_module_install_accept(GtkWidget *, dictionary *dict){ } } char *command = install_command(modules_to_install); - // char *command_with_unload = yon_char_unite(unload_command(modules_to_install),"; ",command,NULL); + char *command_unload = unload_command(modules_to_install); + system(command_unload); yon_command_execute_async(command,widgets); tab->module_installed=1; - free(dict->first->next->next); - dict->first->next->next=NULL; on_subwindow_close(window->Window); } @@ -462,6 +463,7 @@ void on_module_install_clicked(GtkWidget *self,dictionary *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(); + 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); gtk_label_set_text(GTK_LABEL(window->TopicLabel),action_text); @@ -615,6 +617,7 @@ kernels_tab *yon_tab_row_new(GtkListBox *target, char *target_string, main_windo gtk_image_set_from_icon_name(GTK_IMAGE(tab->module_icon),module_icon_path,GTK_ICON_SIZE_BUTTON); } else { gtk_widget_hide(tab->remove_module_button); + gtk_widget_hide(tab->update_module_button); gtk_widget_show(tab->install_module_button); } @@ -627,6 +630,7 @@ kernels_tab *yon_tab_row_new(GtkListBox *target, char *target_string, main_windo } else { gtk_widget_hide(tab->remove_package_button); + gtk_widget_hide(tab->update_package_button); gtk_widget_show(tab->install_package_button); } @@ -662,6 +666,8 @@ kernels_tab *yon_tab_row_new(GtkListBox *target, char *target_string, main_windo dictionary *dict = NULL; yon_dictionary_add_or_create_if_exists_with_data(dict,"widgets",widgets); yon_dictionary_add_or_create_if_exists_with_data(dict,"tab",tab); + g_signal_connect(G_OBJECT(tab->update_module_button),"clicked",G_CALLBACK(on_module_install_clicked),dict); + g_signal_connect(G_OBJECT(tab->update_package_button),"clicked",G_CALLBACK(on_package_install_clicked),dict); g_signal_connect(G_OBJECT(tab->install_module_button),"clicked",G_CALLBACK(on_module_install_clicked),dict); g_signal_connect(G_OBJECT(tab->install_package_button),"clicked",G_CALLBACK(on_package_install_clicked),dict); g_signal_connect(G_OBJECT(tab->remove_module_button),"clicked",G_CALLBACK(on_module_remove_clicked),dict); @@ -1077,7 +1083,7 @@ void yon_main_window_complete(main_window *widgets){ glong columns = vte_terminal_get_column_count(VTE_TERMINAL(widgets->InstallTerminal)); vte_terminal_set_size(VTE_TERMINAL(widgets->InstallTerminal),columns,20); - gtk_paned_add2(GTK_PANED(widgets->TerminalPaned),widgets->TerminalRevealer); + gtk_paned_pack2(GTK_PANED(widgets->TerminalPaned),widgets->TerminalRevealer,1,1); yon_interface_update(widgets); yon_save_window_set_postsave_function(on_save_done,widgets); diff --git a/ubl-settings-kernel.glade b/ubl-settings-kernel.glade index 2909662..af7e520 100644 --- a/ubl-settings-kernel.glade +++ b/ubl-settings-kernel.glade @@ -55,7 +55,6 @@ True False - end slide-up 0 From 6fb6c4d9b162cc88b329f53a99e8b42e7f9a88bc Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 22 Nov 2024 14:52:50 +0600 Subject: [PATCH 07/11] Fixed terminal invisibility --- source/ubl-settings-kernel.c | 1 - 1 file changed, 1 deletion(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index a0827c8..3db5cbd 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -374,7 +374,6 @@ gboolean yon_terminal_get_progress(main_window *widgets){ 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); - gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalRevealer),0); 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); From dcab08ee046ab4b1d0b5c4d38cd9cc7779f40a91 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 22 Nov 2024 15:46:53 +0600 Subject: [PATCH 08/11] Fixed terminal height lock --- source/ubl-settings-kernel.c | 7 +-- ubl-settings-kernel.glade | 83 ++++++++++++++++-------------------- 2 files changed, 39 insertions(+), 51 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 3db5cbd..487237e 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -970,11 +970,9 @@ void on_boot_toggled(GtkWidget *, char *path, main_window *widgets){ } void on_terminal_revealer_open(GtkWidget *, main_window *widgets){ - int opened = gtk_revealer_get_child_revealed(GTK_REVEALER(widgets->TerminalRevealer)); - gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalRevealer),!opened); + int opened = gtk_widget_get_visible(widgets->TerminalPaned); switch (opened){ case 0: { // opens - gtk_revealer_set_transition_type(GTK_REVEALER(widgets->TerminalRevealer),GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP); gtk_button_set_label(GTK_BUTTON(widgets->MoreButton),LESS_LABEL); g_object_ref(widgets->MainNotebook); @@ -993,7 +991,6 @@ void on_terminal_revealer_open(GtkWidget *, main_window *widgets){ } break; case 1: { //closes - gtk_revealer_set_transition_type(GTK_REVEALER(widgets->TerminalRevealer),GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN); gtk_button_set_label(GTK_BUTTON(widgets->MoreButton),MORE_LABEL); int pos = gtk_paned_get_position(GTK_PANED(widgets->TerminalPaned)); @@ -1082,7 +1079,7 @@ void yon_main_window_complete(main_window *widgets){ glong columns = vte_terminal_get_column_count(VTE_TERMINAL(widgets->InstallTerminal)); vte_terminal_set_size(VTE_TERMINAL(widgets->InstallTerminal),columns,20); - gtk_paned_pack2(GTK_PANED(widgets->TerminalPaned),widgets->TerminalRevealer,1,1); + gtk_paned_add2(GTK_PANED(widgets->TerminalPaned),widgets->TerminalRevealer); yon_interface_update(widgets); yon_save_window_set_postsave_function(on_save_done,widgets); diff --git a/ubl-settings-kernel.glade b/ubl-settings-kernel.glade index af7e520..7828ee0 100644 --- a/ubl-settings-kernel.glade +++ b/ubl-settings-kernel.glade @@ -52,69 +52,60 @@ 1 10 - + True False - slide-up - 0 + 0 + in - + True False - 0 - in + 5 + 5 + 5 + 5 - + True False - 5 - 5 - 5 - 5 - + + True + False + True + adjustment1 + UTF-8 + True + True + False + + + True + True + 0 + + + + True False - - - True - False - True - adjustment1 - natural - UTF-8 - True - True - False - - - True - True - 0 - - - - - True - False - vertical - adjustment1 - - - False - True - 1 - - + vertical + adjustment1 + + False + True + 1 + - - - + + + True From b576bc5e5d8fe582444c71153ff09ae843f461ce Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 22 Nov 2024 16:25:07 +0600 Subject: [PATCH 09/11] Progress bar fix --- source/ubl-settings-kernel.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 487237e..c58a65c 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -342,23 +342,31 @@ gboolean on_command_execute_success(GtkWidget *,gint status,main_window *widgets gboolean yon_terminal_get_progress(main_window *widgets){ char *text = vte_terminal_get_text_format(VTE_TERMINAL(widgets->InstallTerminal),VTE_FORMAT_TEXT); - GRegex *regex = g_regex_new("\\d?\\d%",0,0,NULL); + GRegex *regex = g_regex_new("\\d?\\d?\\d%",0,0,NULL); GMatchInfo *match = NULL; g_regex_match(regex,text,0,&match); g_regex_unref(regex); - config_str target = g_match_info_fetch_all(match); double percentage = 0.0; - - if (target){ - int i; - for (i=0;target[i+1];i++){}; - target[i][strlen(target[i])-1]='\0'; - percentage = atof(target[i]); - yon_debug_output("%s\n",target[i]); - gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->InstallationProgress),percentage/100); + char *last_match = NULL; + while (g_match_info_matches(match)) { + char *current_match = g_match_info_fetch(match, 0); + if (last_match) { + g_free(last_match); + } + last_match = current_match; + g_match_info_next(match, NULL); } + if (last_match) { + yon_char_remove_last_symbol(last_match,'%'); + percentage = atof(last_match); + yon_debug_output("%s\n", text); + yon_debug_output("%s\n", last_match); + + gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->InstallationProgress), percentage / 100); + g_free(last_match); + } g_match_info_unref(match); g_mutex_lock(&main_config.progress_mutex); @@ -407,8 +415,6 @@ void on_module_install_accept(GtkWidget *, dictionary *dict){ } } char *command = install_command(modules_to_install); - char *command_unload = unload_command(modules_to_install); - system(command_unload); yon_command_execute_async(command,widgets); tab->module_installed=1; on_subwindow_close(window->Window); @@ -558,6 +564,8 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){ if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){ char *target = yon_package_string_set(tab->module); char *command = remove_command(target); + char *command_unload = unload_command(target); + system(yon_debug_output("%s\n",command_unload)); g_signal_connect(G_OBJECT(widgets->InstallTerminal),"child-exited",G_CALLBACK(on_module_remove_done),tab); yon_command_execute_async(command,widgets); tab->module_installed=0; From 6a93cf973fa9c7eacc897ba8cb9b07712ac94269 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 22 Nov 2024 17:37:52 +0600 Subject: [PATCH 10/11] fixed module ubmounting --- source/ubl-settings-kernel.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index c58a65c..2aaa0c7 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -382,7 +382,8 @@ gboolean yon_terminal_get_progress(main_window *widgets){ 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(widgets->InstallTerminal,yon_debug_output("%s\n",command)); + yon_terminal_integrated_start_shell(widgets->InstallTerminal,yon_debug_output("%s\n",command),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); yon_ubl_status_box_render(OPERATION_IN_PROGRESS_LABEL,BACKGROUND_IMAGE_INFO_TYPE); @@ -566,6 +567,7 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){ char *command = remove_command(target); char *command_unload = unload_command(target); system(yon_debug_output("%s\n",command_unload)); + // system(yon_debug_output("%s\n",command)); g_signal_connect(G_OBJECT(widgets->InstallTerminal),"child-exited",G_CALLBACK(on_module_remove_done),tab); yon_command_execute_async(command,widgets); tab->module_installed=0; @@ -1065,7 +1067,7 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->MoreButton),"clicked",G_CALLBACK(on_terminal_revealer_open),widgets); g_signal_connect(G_OBJECT(widgets->KernelsPackageBox),"row-selected",G_CALLBACK(on_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->AdditionsPackageBox),"row-selected",G_CALLBACK(on_selection_changed),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); From 071131160dc244d2936702a1d7f69551b25cf77d Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 22 Nov 2024 18:04:18 +0600 Subject: [PATCH 11/11] Test fix for installation and removal buttons visibility logic --- source/ubl-settings-kernel.c | 133 +++++++++-------------------------- 1 file changed, 35 insertions(+), 98 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 2aaa0c7..1dae467 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -133,6 +133,11 @@ gboolean yon_tab_create_tags(kernels_tab *tab){ gtk_widget_show(tab->update_module_button); gtk_widget_hide(tab->install_module_button); + } else { + gtk_widget_hide(tab->remove_module_button); + gtk_widget_hide(tab->update_module_button); + + gtk_widget_show(tab->install_module_button); } { if (tab->package_installed){ @@ -141,6 +146,10 @@ gboolean yon_tab_create_tags(kernels_tab *tab){ gtk_widget_hide(tab->install_package_button); gtk_widget_show(tab->remove_package_button); gtk_widget_show(tab->update_package_button); + } else { + gtk_widget_show(tab->install_package_button); + gtk_widget_hide(tab->remove_package_button); + gtk_widget_hide(tab->update_package_button); } } if (tab->package_installed||tab->module_installed){ @@ -194,23 +203,25 @@ void *yon_tab_set_installed(kernels_tab *tab){ char *target_module = yon_package_string_set(tab->module); char *target_package = yon_package_string_set(tab->package); - char *check_install_command = get_package_is_installed_command(target_module); + char *check_install_command = get_package_is_installed_command(target_module); //if module installed if (!system(yon_debug_output("%s\n",check_install_command))){ tab->module_installed=1; } else tab->module_installed=0; free(check_install_command); - check_install_command = get_package_is_installed_command(target_package); + + check_install_command = get_package_is_installed_command(target_package); //if package installed if (!system(yon_debug_output("%s\n",check_install_command))){ tab->package_installed=1; } else tab->package_installed=0; free(check_install_command); - check_install_command = get_package_is_updated_command(target_module); + check_install_command = get_package_is_updated_command(target_module); //if module has updates if (!system(yon_debug_output("%s\n",check_install_command))){ tab->module_updated = 0; } else tab->module_updated = 1; free(check_install_command); - check_install_command = get_package_is_updated_command(target_package); + + check_install_command = get_package_is_updated_command(target_package); //if package has updates if (!system(yon_debug_output("%s\n",check_install_command))){ tab->package_updated = 0; } else tab->package_updated = 1; @@ -567,7 +578,6 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){ char *command = remove_command(target); char *command_unload = unload_command(target); system(yon_debug_output("%s\n",command_unload)); - // system(yon_debug_output("%s\n",command)); g_signal_connect(G_OBJECT(widgets->InstallTerminal),"child-exited",G_CALLBACK(on_module_remove_done),tab); yon_command_execute_async(command,widgets); tab->module_installed=0; @@ -609,44 +619,8 @@ kernels_tab *yon_tab_row_new(GtkListBox *target, char *target_string, main_windo int size; config_str parsed = yon_char_parse(target_string,&size,";"); if (size){ - int types_size; - dictionary *cur = yon_dictionary_get(&main_config.kernel_tabs,parsed[2]); kernels_tab *tab = NULL; - if (cur){ - tab = (kernels_tab*)cur->data; - gtk_widget_hide(tab->changelog_button); - gtk_widget_show(tab->launch_button); - gtk_image_set_from_icon_name(GTK_IMAGE(tab->module_icon),"",GTK_ICON_SIZE_BUTTON); - gtk_image_set_from_icon_name(GTK_IMAGE(tab->package_icon),"",GTK_ICON_SIZE_BUTTON); - if (tab->module_installed){ - gtk_widget_show(tab->remove_module_button); - gtk_widget_hide(tab->install_module_button); - gtk_widget_show(tab->remove_module_button); - yon_tag_add(GTK_BOX(tab->install_tags_box),MODULE_INSTALLED_LABEL,"tag_green",NULL); - gtk_image_set_from_icon_name(GTK_IMAGE(tab->module_icon),module_icon_path,GTK_ICON_SIZE_BUTTON); - } else { - gtk_widget_hide(tab->remove_module_button); - gtk_widget_hide(tab->update_module_button); - gtk_widget_show(tab->install_module_button); - - } - if (tab->package_installed){ - gtk_widget_show(tab->remove_package_button); - gtk_widget_hide(tab->install_package_button); - gtk_widget_show(tab->changelog_button); - yon_tag_add(GTK_BOX(tab->install_tags_box),PACKAGE_INSTALLED_LABEL,"tag_green",NULL); - gtk_image_set_from_icon_name(GTK_IMAGE(tab->package_icon),package_icon_path,GTK_ICON_SIZE_BUTTON); - - } else { - gtk_widget_hide(tab->remove_package_button); - gtk_widget_hide(tab->update_package_button); - gtk_widget_show(tab->install_package_button); - - } - if (!tab->package_installed&&!tab->module_installed){ - gtk_widget_hide(tab->launch_button); - } - } else { + int types_size; tab = malloc(sizeof(kernels_tab)); @@ -738,7 +712,6 @@ kernels_tab *yon_tab_row_new(GtkListBox *target, char *target_string, main_windo gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->RunSizeGroup),tab->run_tags_box); gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->DescriptionSizeGroup),tab->description_label); gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->ButtonsSizeGroup),gtk_widget_get_parent(tab->launch_button)); - } @@ -748,42 +721,11 @@ kernels_tab *yon_tab_row_new(GtkListBox *target, char *target_string, main_windo } additions_kernels_tab *yon_additions_tab_row_new(GtkListBox *target, char *target_string, main_window *widgets){ - int size; + int size=0; config_str parsed = yon_char_parse(target_string,&size,";"); if (size){ - dictionary *cur = yon_dictionary_get(&main_config.addition_tabs,parsed[2]); additions_kernels_tab *tab = NULL; - if (cur){ - tab = (additions_kernels_tab*)cur->data; - gtk_image_set_from_icon_name(GTK_IMAGE(tab->module_icon),"",GTK_ICON_SIZE_BUTTON); - gtk_image_set_from_icon_name(GTK_IMAGE(tab->package_icon),"",GTK_ICON_SIZE_BUTTON); - if (tab->module_installed){ - gtk_widget_show(tab->remove_module_button); - gtk_widget_hide(tab->install_module_button); - gtk_widget_show(tab->update_module_button); - gtk_widget_show(tab->remove_module_button); - yon_tag_add(GTK_BOX(tab->install_tags_box),MODULE_INSTALLED_LABEL,"tag_green",NULL); - gtk_image_set_from_icon_name(GTK_IMAGE(tab->module_icon),module_icon_path,GTK_ICON_SIZE_BUTTON); - } else { - gtk_widget_hide(tab->update_module_button); - gtk_widget_hide(tab->remove_module_button); - gtk_widget_show(tab->install_module_button); - - } - if (tab->package_installed){ - gtk_widget_show(tab->update_package_button); - gtk_widget_show(tab->remove_package_button); - gtk_widget_hide(tab->install_package_button); - yon_tag_add(GTK_BOX(tab->install_tags_box),PACKAGE_INSTALLED_LABEL,"tag_green",NULL); - gtk_image_set_from_icon_name(GTK_IMAGE(tab->package_icon),package_icon_path,GTK_ICON_SIZE_BUTTON); - - } else { - gtk_widget_hide(tab->update_package_button); - gtk_widget_hide(tab->remove_package_button); - gtk_widget_show(tab->install_package_button); - - } - } else { + GtkBuilder *builder = gtk_builder_new_from_resource(glade_additions_table_row_path); tab = malloc(sizeof(additions_kernels_tab)); @@ -819,28 +761,23 @@ additions_kernels_tab *yon_additions_tab_row_new(GtkListBox *target, char *targe g_signal_connect(G_OBJECT(tab->remove_package_button),"clicked",G_CALLBACK(on_package_remove_clicked),dict); gtk_list_box_insert(target,tab->main_box,-1); - int size; - config_str parsed = yon_char_parse(target_string,&size,";"); - if (size){ - tab->name = yon_char_new(parsed[0]); - tab->module = yon_char_new(parsed[1]); - tab->package = yon_char_new(parsed[2]); - char *name = yon_char_unite("",tab->name,"",NULL); - char *module = yon_char_unite("",MODULE_LABEL," ",tab->module,"",NULL); - char *package = yon_char_unite("",PACKAGE_LABEL," ",tab->package,"",NULL); - - yon_dictionary_add_or_create_if_exists_with_data(main_config.addition_tabs,tab->package,tab); - - gtk_label_set_markup(GTK_LABEL(tab->name_label),name); - gtk_label_set_markup(GTK_LABEL(tab->module_label),module); - gtk_label_set_markup(GTK_LABEL(tab->package_label),package); - gtk_label_set_text(GTK_LABEL(tab->description_label),parsed[3]); - gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->KernelSizeGroup),gtk_widget_get_parent(gtk_widget_get_parent(tab->name_label))); - gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->InstallSizeGroup),tab->install_tags_box); - gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->DescriptionSizeGroup),tab->description_label); - gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->ButtonsSizeGroup),gtk_widget_get_parent(tab->remove_module_button)); - } - } + tab->name = yon_char_new(parsed[0]); + tab->module = yon_char_new(parsed[1]); + tab->package = yon_char_new(parsed[2]); + char *name = yon_char_unite("",tab->name,"",NULL); + char *module = yon_char_unite("",MODULE_LABEL," ",tab->module,"",NULL); + char *package = yon_char_unite("",PACKAGE_LABEL," ",tab->package,"",NULL); + + yon_dictionary_add_or_create_if_exists_with_data(main_config.addition_tabs,tab->package,tab); + + gtk_label_set_markup(GTK_LABEL(tab->name_label),name); + gtk_label_set_markup(GTK_LABEL(tab->module_label),module); + gtk_label_set_markup(GTK_LABEL(tab->package_label),package); + gtk_label_set_text(GTK_LABEL(tab->description_label),parsed[3]); + gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->KernelSizeGroup),gtk_widget_get_parent(gtk_widget_get_parent(tab->name_label))); + gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->InstallSizeGroup),tab->install_tags_box); + gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->DescriptionSizeGroup),tab->description_label); + gtk_size_group_add_widget(GTK_SIZE_GROUP(widgets->ButtonsSizeGroup),gtk_widget_get_parent(tab->remove_module_button)); return tab; } return NULL;