From 271ee4303c289e8cd3f0ecf1f01425da87530bb3 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 5 Dec 2024 10:41:57 +0600 Subject: [PATCH 01/14] Added dependences for deleting kernel dependences --- source/ubl-settings-kernel.c | 79 ++++++++++++++++++++++++++------ source/ubl-strings.h | 3 +- ubl-settings-kernel-dialog.glade | 20 +++++--- 3 files changed, 82 insertions(+), 20 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 49d8ff1..0736467 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -160,6 +160,46 @@ void on_config_custom_load(GtkWidget *,main_window *widgets){ yon_terminal_integrated_start(terminal,command); } +char *yon_package_dependent_get(char *target){ + int size=0; + config_str parsed = NULL; + if (strstr(target,",")){ + int final_size=0; + int targets_size=0; + config_str targets = yon_char_parse(target,&targets_size,","); + for (int i=0;iinstall_tags_box)); for (guint i=0;iMainNotebook))){ gtk_widget_hide(window->DependencesFrame); - // gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START); + gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START); } else { int size; config_str additions = yon_resource_open_file(kernels_addon_path,&size); @@ -766,7 +806,7 @@ void on_package_install_clicked(GtkWidget *self,dictionary *dict){ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ gtk_widget_hide(window->DependencesFrame); - // gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START); + gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START); } else { int size; config_str additions = yon_resource_open_file(kernels_addon_path,&size); @@ -835,7 +875,7 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){ yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_MODULE_TITLE_LABEL:INSTALL_MODULE_TITLE_LABEL,icon_path,"additions_dialog"); action_text = ADDITION_MODULE_REMOVE_CONFIRMATION_LABEL(tab->name); gtk_widget_hide(window->DependencesFrame); - // gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START); + gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START); gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_ADDITION_MODULE_TITLE_LABEL); } else { yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_MODULE_TITLE_LABEL:INSTALL_MODULE_TITLE_LABEL,icon_path,"dialog"); @@ -848,18 +888,26 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){ } int size; config_str additions = yon_resource_open_file(kernels_addon_path,&size); - GtkTreeIter iter; + // GtkTreeIter iter; for (int i=0;imodule_requirements_size;i++){ if (!system(get_package_is_installed_command(tab->module_requirements[i]))){ - gtk_list_store_append(window->liststore1,&iter); for (int j=1;jmodule_requirements[i])) - gtk_list_store_set(window->liststore1,&iter,1,yon_char_unite(parsed[1],",",parsed[2],NULL),2,parsed[3],-1); + if (!strcmp(parsed[1],tab->module_requirements[i])){ + char *target = yon_char_unite(parsed[1],",",parsed[2],NULL); + char *depends = yon_package_dependent_get(target); + if (strcmp(depends,target)){ + GtkTreeIter itar; + gtk_list_store_append(window->liststore1,&itar); + gtk_list_store_set(window->liststore1,&itar,0,1,1,depends,2, parsed[3],-1); + + } + } yon_char_parsed_free(parsed,cur_size); } } + } yon_char_parsed_free(additions,size); } @@ -909,7 +957,7 @@ void on_package_remove_clicked(GtkWidget *self,dictionary *dict){ action_text = ADDITION_PACKAGE_REMOVE_CONFIRMATION_LABEL(tab->name); gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_ADDITION_PACKAGE_TITLE_LABEL); gtk_widget_hide(window->DependencesFrame); - // gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START); + gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START); } else { if (installed_kernels>1){ action_text = KERNEL_PACKAGE_REMOVE_CONFIRMATION_LABEL(tab->name); @@ -921,18 +969,23 @@ void on_package_remove_clicked(GtkWidget *self,dictionary *dict){ gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_PACKAGE_TITLE_LABEL); int size; config_str additions = yon_resource_open_file(kernels_addon_path,&size); - GtkTreeIter iter; for (int i=0;imodule_requirements_size;i++){ if (!system(get_package_is_installed_command(tab->package_requirements[i]))){ - gtk_list_store_append(window->liststore1,&iter); for (int j=1;jmodule_requirements[i])) - gtk_list_store_set(window->liststore1,&iter,2,parsed[3],-1); + if (!strcmp(parsed[1],tab->module_requirements[i])){ + char *target = yon_char_unite(parsed[1],",",parsed[2],NULL); + char *depends = yon_package_dependent_get(target); + if (strcmp(depends,target)){ + GtkTreeIter itar; + gtk_list_store_append(window->liststore1,&itar); + gtk_list_store_set(window->liststore1,&itar,0,1,1,depends,2, parsed[3],-1); + + } + } yon_char_parsed_free(parsed,cur_size); } - gtk_list_store_set(window->liststore1,&iter,0,1,1,tab->module_requirements[i],-1); } } yon_char_parsed_free(additions,size); diff --git a/source/ubl-strings.h b/source/ubl-strings.h index acf1461..a4620be 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -92,4 +92,5 @@ #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") -#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 DEPENDS_LABEL(target) yon_char_unite(_("Some of chosen dependent packages have been in dependences for another packages"),": ",target,_(". Do you really want to remove them?"),NULL) \ No newline at end of file diff --git a/ubl-settings-kernel-dialog.glade b/ubl-settings-kernel-dialog.glade index bf2774c..753b4a1 100644 --- a/ubl-settings-kernel-dialog.glade +++ b/ubl-settings-kernel-dialog.glade @@ -5,11 +5,13 @@ - + - + - + + + @@ -103,6 +105,7 @@ True True liststore1 + both none @@ -122,7 +125,10 @@ Module - + + word + 200 + 1 @@ -133,7 +139,9 @@ Description - + + 100 + 2 @@ -155,7 +163,7 @@ - False + True True 1 -- 2.35.1 From e26355b2cf584060a21a32fa658fccfd079766b7 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 5 Dec 2024 11:49:27 +0600 Subject: [PATCH 02/14] Added dependenced packages/modules deleting with packages and modules --- source/ubl-settings-kernel.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 0736467..47b5f92 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -667,6 +667,14 @@ void on_module_remove_accept(GtkWidget *, dictionary *dict){ modules_to_install = temp; } } + }else { + int size; + config_str tmp = yon_config_load(get_dependent_command(modules_to_install),&size); + for (int i=0;i Date: Thu, 5 Dec 2024 13:26:33 +0600 Subject: [PATCH 03/14] Added dependances check --- source/ubl-settings-kernel.c | 14 ++++++++++++-- source/ubl-settings-kernel.h | 4 +--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 47b5f92..29d9fde 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -161,6 +161,9 @@ void on_config_custom_load(GtkWidget *,main_window *widgets){ } char *yon_package_dependent_get(char *target){ + int command_check = 0; + command_check = system(check_pactree_exist_command); + if (command_check) return target; int size=0; config_str parsed = NULL; if (strstr(target,",")){ @@ -904,7 +907,7 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){ } int size; config_str additions = yon_resource_open_file(kernels_addon_path,&size); - // GtkTreeIter iter; + GtkTreeIter itar; for (int i=0;imodule_requirements_size;i++){ if (!system(get_package_is_installed_command(tab->module_requirements[i]))){ for (int j=1;jliststore1,&itar); gtk_list_store_set(window->liststore1,&itar,0,1,1,depends,2, parsed[3],-1); + } else { + gtk_list_store_append(window->liststore1,&itar); + gtk_list_store_set(window->liststore1,&itar,0,1,1,target,2, parsed[3],-1); + } } yon_char_parsed_free(parsed,cur_size); @@ -998,6 +1004,10 @@ void on_package_remove_clicked(GtkWidget *self,dictionary *dict){ gtk_list_store_append(window->liststore1,&itar); gtk_list_store_set(window->liststore1,&itar,0,1,1,depends,2, parsed[3],-1); + } else { + gtk_list_store_append(window->liststore1,&itar); + gtk_list_store_set(window->liststore1,&itar,0,1,1,target,2, parsed[3],-1); + } } yon_char_parsed_free(parsed,cur_size); diff --git a/source/ubl-settings-kernel.h b/source/ubl-settings-kernel.h index c4c786c..db47b93 100644 --- a/source/ubl-settings-kernel.h +++ b/source/ubl-settings-kernel.h @@ -47,16 +47,14 @@ #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 -Qqu ",target) -#define unload_command(target) yon_char_append("ubmunload ",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 get_active_kernel_command "cat /usr/lib/modules/$(uname -r)/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 ",!yon_char_is_empty(filename)?"-n ":"",filename," -k ",target, " ",(debug_bool)?"--addon ":"",(drivers_bool)?"-H":"",NULL) -- 2.35.1 From 6e68da8c85ddee1aef0ad95eeb4576f7061404f1 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 5 Dec 2024 13:30:08 +0600 Subject: [PATCH 04/14] Fixes for package dependences checking --- source/ubl-settings-kernel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 29d9fde..49a1ec1 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -990,6 +990,7 @@ void on_package_remove_clicked(GtkWidget *self,dictionary *dict){ gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_PACKAGE_TITLE_LABEL); int size; + GtkTreeIter itar; config_str additions = yon_resource_open_file(kernels_addon_path,&size); for (int i=0;imodule_requirements_size;i++){ if (!system(get_package_is_installed_command(tab->package_requirements[i]))){ @@ -1000,7 +1001,6 @@ void on_package_remove_clicked(GtkWidget *self,dictionary *dict){ char *target = yon_char_unite(parsed[1],",",parsed[2],NULL); char *depends = yon_package_dependent_get(target); if (strcmp(depends,target)){ - GtkTreeIter itar; gtk_list_store_append(window->liststore1,&itar); gtk_list_store_set(window->liststore1,&itar,0,1,1,depends,2, parsed[3],-1); -- 2.35.1 From 5725f630e4dfdc060debe217734b1b85459f11c3 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 5 Dec 2024 18:32:28 +0600 Subject: [PATCH 05/14] build window rework WIP --- source/ubl-settings-kernel.c | 12 +- source/ubl-settings-kernel.h | 6 +- ubl-settings-kernel-install.glade | 215 +++++++++++++++++++++++++++--- ubl-settings-kernel.css | 8 ++ 4 files changed, 220 insertions(+), 21 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 49a1ec1..c69db14 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -434,8 +434,10 @@ install_window *yon_install_window_new(){ window->KernelVersionCombo = yon_gtk_builder_get_widget(builder,"KernelVersionCombo"); window->FilenameEntry = yon_gtk_builder_get_widget(builder,"FilenameEntry"); - window->DebugCheck = yon_gtk_builder_get_widget(builder,"DebugCheck"); - window->DriversCheck = yon_gtk_builder_get_widget(builder,"DriversCheck"); + window->BasicSwitch = yon_gtk_builder_get_widget(builder,"BasicSwitch"); + window->BasicCurrentSwitch = yon_gtk_builder_get_widget(builder,"BasicCurrentSwitch"); + window->DebugSwitch = yon_gtk_builder_get_widget(builder,"DebugSwitch"); + window->UniversalSwitch = yon_gtk_builder_get_widget(builder,"UniversalSwitch"); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); return window; @@ -1301,8 +1303,10 @@ void on_changelog_clicked(GtkWidget *, kernels_tab *tab){ void on_build_execute(GtkWidget *, dictionary *dict){ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); install_window *window = yon_dictionary_get_data(dict->first->next,install_window*); - int debug = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DebugCheck)); - int drivers = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DriversCheck)); + int basic = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->BasicSwitch)); + int drivers = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->BasicCurrentSwitch)); + int debug = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DebugSwitch)); + int universal = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UniversalSwitch)); 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); diff --git a/source/ubl-settings-kernel.h b/source/ubl-settings-kernel.h index db47b93..b5dc13d 100644 --- a/source/ubl-settings-kernel.h +++ b/source/ubl-settings-kernel.h @@ -137,8 +137,10 @@ typedef struct { GtkWidget *KernelVersionCombo; GtkWidget *FilenameEntry; - GtkWidget *DebugCheck; - GtkWidget *DriversCheck; + GtkWidget *BasicSwitch; + GtkWidget *BasicCurrentSwitch; + GtkWidget *DebugSwitch; + GtkWidget *UniversalSwitch; }install_window; typedef struct { diff --git a/ubl-settings-kernel-install.glade b/ubl-settings-kernel-install.glade index be7d339..b9fe623 100644 --- a/ubl-settings-kernel-install.glade +++ b/ubl-settings-kernel-install.glade @@ -1,7 +1,8 @@ - - + + + 400 200 @@ -114,36 +115,220 @@ - - Add debug components + True - True - False - True + False + 0 + none + + + True + False + 5 + 5 + 5 + 5 + + + True + False + vertical + 5 + + + True + False + 5 + + + True + False + Build basic image + + + False + True + 0 + + + + + True + True + + + False + True + end + 1 + + + + + False + True + 0 + + + + + True + True + True + True + True + + + True + False + 5 + + + True + False + Build basic image with drivers for current hardware components only + True + + + False + True + 0 + + + + + True + True + + + False + True + end + 1 + + + + + + + True + False + <s>--------------------------------------------------------------</s> + True + + + + + True + True + 1 + + + + + + + + + + False True - 2 + 4 - - Add drivers for current hardware components only + True - True - False - True + False + vertical + 5 + + + True + False + 5 + + + True + False + Add debug components + + + False + True + 0 + + + + + True + True + + + False + True + end + 1 + + + + + False + True + 0 + + + + + True + False + 5 + + + True + False + Build universal drivers for hardware components + + + False + True + 0 + + + + + True + True + + + False + True + end + 1 + + + + + False + True + 1 + + False True - 3 + 5 - False + True True 1 diff --git a/ubl-settings-kernel.css b/ubl-settings-kernel.css index ef67a0e..05d9330 100644 --- a/ubl-settings-kernel.css +++ b/ubl-settings-kernel.css @@ -55,6 +55,14 @@ background:transparent; .workingbg { background:@theme_base_color; } +.bggrey{ + background-color: @insensitive_fg_color; + border-radius:5px; + border-color:@theme_text_color; + border-style:solid; + border-width:0.55px; + color:@theme_bg_color; +} .menuitembottom{ margin-top:0px; margin-bottom:3px; -- 2.35.1 From ff35f6f5a65e3bf80516ebd8ef55cad2290584a8 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 6 Dec 2024 11:58:35 +0600 Subject: [PATCH 06/14] Initramfs window changes --- source/ubl-settings-kernel.c | 14 +++- source/ubl-settings-kernel.h | 5 ++ source/ubl-strings.h | 11 ++-- ubl-settings-kernel-install.glade | 106 +++++++++++++++++++++--------- ubl-settings-kernel.css | 5 +- ubl-settings-kernel.pot | 19 +++++- ubl-settings-kernel_ru.po | 20 +++++- 7 files changed, 134 insertions(+), 46 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index c69db14..fa8aeb8 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -420,6 +420,12 @@ info_window *yon_info_window_new(){ return window; } +void on_basic_toggled(GtkSwitch *,int state, install_window *window){ + gtk_menu_button_set_direction(GTK_MENU_BUTTON(window->ArrowButton),state?GTK_ARROW_UP:GTK_ARROW_DOWN); + gtk_revealer_set_transition_type(GTK_REVEALER(window->ShowRevealer),state?GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN:GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP); + gtk_revealer_set_reveal_child(GTK_REVEALER(window->ShowRevealer), state); +} + install_window *yon_install_window_new(){ install_window *window = malloc(sizeof(install_window)); @@ -438,8 +444,12 @@ install_window *yon_install_window_new(){ window->BasicCurrentSwitch = yon_gtk_builder_get_widget(builder,"BasicCurrentSwitch"); window->DebugSwitch = yon_gtk_builder_get_widget(builder,"DebugSwitch"); window->UniversalSwitch = yon_gtk_builder_get_widget(builder,"UniversalSwitch"); + window->BackgroundFrame = yon_gtk_builder_get_widget(builder,"BackgroundFrame"); + window->ArrowButton = yon_gtk_builder_get_widget(builder,"ArrowButton"); + window->ShowRevealer = yon_gtk_builder_get_widget(builder,"ShowRevealer"); g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); + g_signal_connect(G_OBJECT(window->BasicSwitch),"state-set",G_CALLBACK(on_basic_toggled),window); return window; } @@ -1303,10 +1313,10 @@ void on_changelog_clicked(GtkWidget *, kernels_tab *tab){ void on_build_execute(GtkWidget *, dictionary *dict){ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); install_window *window = yon_dictionary_get_data(dict->first->next,install_window*); - int basic = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->BasicSwitch)); + // int basic = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->BasicSwitch)); int drivers = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->BasicCurrentSwitch)); int debug = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DebugSwitch)); - int universal = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UniversalSwitch)); + // int universal = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UniversalSwitch)); 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); diff --git a/source/ubl-settings-kernel.h b/source/ubl-settings-kernel.h index b5dc13d..43605ed 100644 --- a/source/ubl-settings-kernel.h +++ b/source/ubl-settings-kernel.h @@ -141,6 +141,9 @@ typedef struct { GtkWidget *BasicCurrentSwitch; GtkWidget *DebugSwitch; GtkWidget *UniversalSwitch; + GtkWidget *BackgroundFrame; + GtkWidget *ShowRevealer; + GtkWidget *ArrowButton; }install_window; typedef struct { @@ -284,5 +287,7 @@ void on_boot_toggled(GtkWidget *, char *path, main_window *widgets); void on_terminal_revealer_open(GtkWidget *, main_window *widgets); +void on_basic_toggled(GtkSwitch *self,int state, install_window *window); + info_window *yon_info_window_new(); install_window *yon_install_window_new(); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index a4620be..8f31399 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -24,7 +24,11 @@ #define KERNEL_VERSION_LABEL _("Kernel version:") #define IMAGE_FILE_LABEL _("Image file:") #define ADD_DEBUG_LABEL _("Add debug components") -#define ADD_DRIVERS_LABEL _("Add drivers for current hardware components only") +#define BUILD_BASIC_LABEL _("Build basic image") +#define BUILD_BASIC_CURRENT_LABEL _("Build basic image with drivers for current hardware components only") +#define BUILD_UNIVERSAL_LABEL _("Build universal drivers for hardware components") +#define BUILD_SUCCESS_STATUS_LABEL _("Building has succeeded") +#define BUILD_FAILED_STATUS_LABEL _("Building has failed") #define INSTALL_MODULE_LABEL _("Install module") #define REMOVE_MODULE_LABEL _("Remove module") @@ -90,7 +94,4 @@ #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") -#define KERNEL_PACKAGE_INSTALL_ATTENTION_LABEL _("Attention! If you work in sandbox mode, you must install the package with the module!") -#define DEPENDS_LABEL(target) yon_char_unite(_("Some of chosen dependent packages have been in dependences for another packages"),": ",target,_(". Do you really want to remove them?"),NULL) \ 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!") \ No newline at end of file diff --git a/ubl-settings-kernel-install.glade b/ubl-settings-kernel-install.glade index b9fe623..5783758 100644 --- a/ubl-settings-kernel-install.glade +++ b/ubl-settings-kernel-install.glade @@ -1,5 +1,5 @@ - + @@ -115,7 +115,7 @@ - + True False 0 @@ -152,9 +152,19 @@ - + True True + False + True + + + + False @@ -163,6 +173,18 @@ 1 + + + True + True + + + False + True + end + 2 + + False @@ -171,55 +193,79 @@ - + True - True - True - True - True + False + vertical True False - 5 - + True False - Build basic image with drivers for current hardware components only - True + center - False + True True 0 - - - True - True - - - False - True - end - 1 - - + + False + True + 0 + - - + + True False - <s>--------------------------------------------------------------</s> - True + + + True + False + 5 + + + True + False + Build basic image with drivers for current hardware components only + True + + + False + True + 0 + + + + + True + True + + + False + True + end + 1 + + + + + + False + True + 1 + - True + False True 1 diff --git a/ubl-settings-kernel.css b/ubl-settings-kernel.css index 05d9330..2c2a5de 100644 --- a/ubl-settings-kernel.css +++ b/ubl-settings-kernel.css @@ -56,12 +56,11 @@ background:transparent; background:@theme_base_color; } .bggrey{ - background-color: @insensitive_fg_color; border-radius:5px; border-color:@theme_text_color; border-style:solid; - border-width:0.55px; - color:@theme_bg_color; + border-width:0.3px; + box-shadow: 1px 4px 4px rgba(0, 0, 0, 0.3); } .menuitembottom{ margin-top:0px; diff --git a/ubl-settings-kernel.pot b/ubl-settings-kernel.pot index e9ddf1b..8353c85 100644 --- a/ubl-settings-kernel.pot +++ b/ubl-settings-kernel.pot @@ -247,7 +247,7 @@ msgstr "" msgid "Are you sure want to install module with addition package" msgstr "" -source/ubl-strings.h:72 +#: source/ubl-strings.h:72 msgid "Are you sure want to install addition package" msgstr "" @@ -335,15 +335,28 @@ msgid "Update addition package" msgstr "" #: source/ubl-strings.h:93 -msgid "Building has succeeded" +msgid "Build basic image" msgstr "" #: source/ubl-strings.h:94 -msgid "Building has failed" +msgid "Build basic image with drivers for current hardware components only" msgstr "" #: source/ubl-strings.h:95 +msgid "Build universal drivers for hardware components" +msgstr "" + +#: source/ubl-strings.h:96 +msgid "Building has succeeded" +msgstr "" + +#: source/ubl-strings.h:97 +msgid "Building has failed" +msgstr "" + +#: source/ubl-strings.h:98 msgid "" "Attention! If you work in sandbox mode, you must install the package with " "the module!" msgstr "" + diff --git a/ubl-settings-kernel_ru.po b/ubl-settings-kernel_ru.po index dda5b43..dd85158 100644 --- a/ubl-settings-kernel_ru.po +++ b/ubl-settings-kernel_ru.po @@ -346,15 +346,29 @@ msgid "Update addition package" msgstr "Обновить пакет с дополнением" #: source/ubl-strings.h:93 +msgid "Build basic image" +msgstr "Собрать базовый образ" + +#: source/ubl-strings.h:94 +msgid "Build basic image with drivers for current hardware components only" +msgstr "Собрать базовый образ только с текущими драйверами аппаратных компонентов" + +#: source/ubl-strings.h:95 +msgid "Build universal drivers for hardware components" +msgstr "Собрать универсальные драйвера аппаратных компонентов" + +#: source/ubl-strings.h:96 msgid "Building has succeeded" msgstr "Сборка прошла успешно" -#: source/ubl-strings.h:94 +#: source/ubl-strings.h:97 msgid "Building has failed" msgstr "Ошибка сборки ядра" -#: source/ubl-strings.h:95 +#: source/ubl-strings.h:98 msgid "" "Attention! If you work in sandbox mode, you must install the package with " "the module!" -msgstr "Внимание! Если вы работаете в режиме песочницы, необходимо установить пакет с модулем!" +msgstr "" +"Внимание! Если вы работаете в режиме песочницы, необходимо установить пакет " +"с модулем!" -- 2.35.1 From 3654a8cca7421f626a088d419bcb08e5751086e7 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 6 Dec 2024 13:12:05 +0600 Subject: [PATCH 07/14] Initramfs window changes --- source/ubl-settings-kernel.c | 28 ++++++++++++++++++++-------- source/ubl-settings-kernel.h | 4 +++- ubl-settings-kernel-install.glade | 25 ++----------------------- ubl-settings-kernel.css | 2 +- 4 files changed, 26 insertions(+), 33 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index fa8aeb8..34d7b23 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -157,7 +157,7 @@ void on_config_custom_load(GtkWidget *,main_window *widgets){ 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); + yon_terminal_integrated_start_shell(terminal,command,NULL,NULL); } char *yon_package_dependent_get(char *target){ @@ -1313,15 +1313,27 @@ void on_changelog_clicked(GtkWidget *, kernels_tab *tab){ void on_build_execute(GtkWidget *, dictionary *dict){ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); install_window *window = yon_dictionary_get_data(dict->first->next,install_window*); - // int basic = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->BasicSwitch)); - int drivers = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->BasicCurrentSwitch)); - int debug = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->DebugSwitch)); - // int universal = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(window->UniversalSwitch)); + int basic = gtk_switch_get_active(GTK_SWITCH(window->BasicSwitch)); + int drivers = gtk_switch_get_active(GTK_SWITCH(window->BasicCurrentSwitch)); + int debug = gtk_switch_get_active(GTK_SWITCH(window->DebugSwitch)); + int universal = gtk_switch_get_active(GTK_SWITCH(window->UniversalSwitch)); 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_start(GTK_WINDOW(widgets->Window),yon_debug_output("%s\n",command)); - gtk_widget_destroy(window->window); + int size=0; + config_str commands = NULL; + if (basic) yon_char_parsed_add_or_create_if_exists(commands,&size,build_command_basic(filename,target,drivers)); + if (debug) yon_char_parsed_add_or_create_if_exists(commands,&size,build_command_debug(filename,target)); + if (universal) yon_char_parsed_add_or_create_if_exists(commands,&size, build_command_universal(filename,target)); + if (size){ + char *command = yon_char_parsed_to_string(commands,size,"; "); + yon_terminal_window_start(GTK_WINDOW(widgets->Window),yon_debug_output("%s\n",command)); + gtk_widget_destroy(window->window); + } else { + textdomain(template_ui_LocaleName); + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + textdomain(LocaleName); + return; + } } void on_building_clicked(GtkWidget *, main_window *widgets){ diff --git a/source/ubl-settings-kernel.h b/source/ubl-settings-kernel.h index 43605ed..574973f 100644 --- a/source/ubl-settings-kernel.h +++ b/source/ubl-settings-kernel.h @@ -56,7 +56,9 @@ #define get_active_kernel_command "cat /usr/lib/modules/$(uname -r)/pkgbase" -#define build_command(target,filename,debug_bool,drivers_bool) yon_char_unite("ubmkuird -l ",!yon_char_is_empty(filename)?"-n ":"",filename," -k ",target, " ",(debug_bool)?"--addon ":"",(drivers_bool)?"-H":"",NULL) +#define build_command_basic(target,kernel, only) yon_char_unite("ubmkuird -l -n ",target," -k ",kernel, only? " -H ":"",NULL) +#define build_command_debug(target,kernel) yon_char_unite("ubmkuird -l --addon -n ",target," -k ",kernel,NULL) +#define build_command_universal(target,kernel) yon_char_unite("ubmkuird -l --kmod -n ",target," -k ",kernel,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" diff --git a/ubl-settings-kernel-install.glade b/ubl-settings-kernel-install.glade index 5783758..cd2ae24 100644 --- a/ubl-settings-kernel-install.glade +++ b/ubl-settings-kernel-install.glade @@ -177,6 +177,7 @@ True True + True False @@ -197,33 +198,11 @@ True False vertical - - - True - False - - - True - False - center - - - True - True - 0 - - - - - False - True - 0 - - True False + True True diff --git a/ubl-settings-kernel.css b/ubl-settings-kernel.css index 2c2a5de..de229a6 100644 --- a/ubl-settings-kernel.css +++ b/ubl-settings-kernel.css @@ -60,7 +60,7 @@ background:transparent; border-color:@theme_text_color; border-style:solid; border-width:0.3px; - box-shadow: 1px 4px 4px rgba(0, 0, 0, 0.3); + box-shadow: 1px 2px 3px rgba(0, 0, 0, 0.15); } .menuitembottom{ margin-top:0px; -- 2.35.1 From 792a29dc4edbf62279bc88033422ca88407fabc5 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 6 Dec 2024 17:35:32 +0600 Subject: [PATCH 08/14] changed shade pos and blur --- ubl-settings-kernel.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ubl-settings-kernel.css b/ubl-settings-kernel.css index de229a6..371e121 100644 --- a/ubl-settings-kernel.css +++ b/ubl-settings-kernel.css @@ -60,7 +60,7 @@ background:transparent; border-color:@theme_text_color; border-style:solid; border-width:0.3px; - box-shadow: 1px 2px 3px rgba(0, 0, 0, 0.15); + box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.15); } .menuitembottom{ margin-top:0px; -- 2.35.1 From 35b67169514e76f277c7fe0f30c9b9a5ba4b637c Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 9 Dec 2024 09:49:36 +0600 Subject: [PATCH 09/14] Removed dependences checking; Added terminal opening at command executing --- source/ubl-settings-kernel.c | 53 ++++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 34d7b23..ea75fbb 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -394,16 +394,6 @@ void *yon_interface_update(main_window *widgets){ g_thread_new("tags_install_tread",(GThreadFunc)yon_tab_set_installed,tab); gtk_widget_set_can_focus(gtk_widget_get_parent(tab->main_box),0); } - textdomain(template_ui_LocaleName); - switch (main_config.load_mode){ - case 0: yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - break; - case 1: yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - break; - case 3: yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - break; - } - textdomain(LocaleName); } return NULL; } @@ -477,6 +467,7 @@ int yon_tag_add(GtkBox *target,char *tag_label, char *tag_style, char *icon_name } gboolean on_command_execute_success(GtkWidget *,gint status,main_window *widgets){ + // gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->MainRevealer),0); g_mutex_lock(&main_config.progress_mutex); main_config.progress_active=0; g_mutex_unlock(&main_config.progress_mutex); @@ -505,6 +496,24 @@ gboolean on_command_execute_success(GtkWidget *,gint status,main_window *widgets gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_module_button,1); gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_package_button,1); } + { + 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); + } return G_SOURCE_REMOVE; } @@ -583,6 +592,7 @@ void *yon_command_execute_async(char *command,main_window *widgets){ gtk_widget_set_sensitive(((kernels_tab*)dict->data)->remove_package_button,0); } } + on_terminal_revealer_open(NULL,widgets); return NULL; } @@ -594,7 +604,7 @@ void on_module_install_accept(GtkWidget *, dictionary *dict){ dict->first->next->next = NULL; char *module_formated = yon_package_string_set(tab->module); char *modules_to_install = NULL; - if (!tab->module_updated) modules_to_install = yon_char_unite(module_formated, " ", yon_package_string_set(tab->package), NULL); + if (!tab->module_updated) modules_to_install = module_formated; else modules_to_install = module_formated; GtkTreeIter iter; @@ -796,7 +806,7 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){ int cur_size; config_str parsed = yon_char_parse(additions[j],&cur_size,";"); if (!strcmp(parsed[1],tab->module_requirements[i])) - gtk_list_store_set(window->liststore1,&iter,1,yon_char_unite(parsed[1],",",parsed[2],NULL),2,parsed[3],-1); + gtk_list_store_set(window->liststore1,&iter,1,parsed[1],2,parsed[3],-1); yon_char_parsed_free(parsed,cur_size); } } @@ -920,13 +930,19 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){ int size; config_str additions = yon_resource_open_file(kernels_addon_path,&size); GtkTreeIter itar; + char *target_depends = yon_package_dependent_get(tab->module); + if (target_depends&&strcmp(target_depends,tab->package)){ + free(yon_char_divide_search(target_depends," ",-1)); + gtk_list_store_append(window->liststore1,&itar); + gtk_list_store_set(window->liststore1,&itar,0,1,1,target_depends,-1); + } for (int i=0;imodule_requirements_size;i++){ if (!system(get_package_is_installed_command(tab->module_requirements[i]))){ for (int j=1;jmodule_requirements[i])){ - char *target = yon_char_unite(parsed[1],",",parsed[2],NULL); + char *target = parsed[1]; char *depends = yon_package_dependent_get(target); if (strcmp(depends,target)){ gtk_list_store_append(window->liststore1,&itar); @@ -1002,7 +1018,13 @@ void on_package_remove_clicked(GtkWidget *self,dictionary *dict){ gtk_label_set_text(GTK_LABEL(window->HeadLabel),REMOVE_PACKAGE_TITLE_LABEL); int size; - GtkTreeIter itar; + GtkTreeIter itar; + char *target_depends = yon_package_dependent_get(tab->package); + if (target_depends&&strcmp(target_depends,tab->package)){ + free(yon_char_divide_search(target_depends," ",-1)); + gtk_list_store_append(window->liststore1,&itar); + gtk_list_store_set(window->liststore1,&itar,0,1,1,target_depends,-1); + } config_str additions = yon_resource_open_file(kernels_addon_path,&size); for (int i=0;imodule_requirements_size;i++){ if (!system(get_package_is_installed_command(tab->package_requirements[i]))){ @@ -1010,7 +1032,7 @@ void on_package_remove_clicked(GtkWidget *self,dictionary *dict){ int cur_size; config_str parsed = yon_char_parse(additions[j],&cur_size,";"); if (!strcmp(parsed[1],tab->module_requirements[i])){ - char *target = yon_char_unite(parsed[1],",",parsed[2],NULL); + char *target = parsed[2]; char *depends = yon_package_dependent_get(target); if (strcmp(depends,target)){ gtk_list_store_append(window->liststore1,&itar); @@ -1481,6 +1503,7 @@ void yon_main_window_complete(main_window *widgets){ yon_save_window_set_postsave_function(on_save_done,widgets); yon_terminal_integrated_start(widgets->InstallTerminal,pacman_update_command); + on_terminal_revealer_open(NULL,widgets); } yon_load_proceed(YON_CONFIG_LOCAL); } -- 2.35.1 From fca1c11f5036c19dc8be8a51099624c469f419a9 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 9 Dec 2024 11:04:50 +0600 Subject: [PATCH 10/14] Added insensitiveness for dependences buttons at removing --- source/ubl-settings-kernel.c | 11 +++++------ ubl-settings-kernel-dialog.glade | 3 +++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index ea75fbb..a22a59e 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -766,7 +766,6 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){ kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*); char *action_text = NULL; 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); if (self == tab->update_module_button){ @@ -806,7 +805,7 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){ int cur_size; config_str parsed = yon_char_parse(additions[j],&cur_size,";"); if (!strcmp(parsed[1],tab->module_requirements[i])) - gtk_list_store_set(window->liststore1,&iter,1,parsed[1],2,parsed[3],-1); + gtk_list_store_set(window->liststore1,&iter,1,parsed[1],2,parsed[3],4,1,-1); yon_char_parsed_free(parsed,cur_size); } } @@ -823,11 +822,9 @@ void on_package_install_clicked(GtkWidget *self,dictionary *dict){ if (self == tab->update_module_button){ if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ - yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_PACKAGE_TITLE_LABEL:INSTALL_PACKAGE_TITLE_LABEL,icon_path,"dialog"); action_text = KERNEL_PACKAGE_UPDATE_CONFIRMATION_LABEL(tab->name); gtk_label_set_text(GTK_LABEL(window->HeadLabel),UPDATE_PACKAGE_TITLE_LABEL); } else { - yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_PACKAGE_TITLE_LABEL:INSTALL_PACKAGE_TITLE_LABEL,icon_path,"additions_dialog"); action_text = ADDITION_PACKAGE_UPDATE_CONFIRMATION_LABEL(tab->name); gtk_label_set_text(GTK_LABEL(window->HeadLabel),UPDATE_ADDITION_PACKAGE_TITLE_LABEL); } @@ -846,9 +843,11 @@ void on_package_install_clicked(GtkWidget *self,dictionary *dict){ yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_PACKAGE_TITLE_LABEL:INSTALL_PACKAGE_TITLE_LABEL,icon_path,"additions_dialog"); gtk_widget_hide(window->DependencesFrame); gtk_box_set_child_packing(GTK_BOX(gtk_widget_get_parent(window->DependencesFrame)),gtk_widget_get_parent(gtk_widget_get_parent(window->TopicLabel)),1,1,0,GTK_PACK_START); } else { + yon_gtk_window_setup(GTK_WINDOW(window->Window),GTK_WINDOW(widgets->Window),self==tab->update_package_button?UPDATE_PACKAGE_TITLE_LABEL:INSTALL_PACKAGE_TITLE_LABEL,icon_path,"dialog"); int size; config_str additions = yon_resource_open_file(kernels_addon_path,&size); GtkTreeIter iter; @@ -861,7 +860,7 @@ void on_package_install_clicked(GtkWidget *self,dictionary *dict){ 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],4,1,-1); } yon_char_parsed_free(additions,size); @@ -931,7 +930,7 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){ config_str additions = yon_resource_open_file(kernels_addon_path,&size); GtkTreeIter itar; char *target_depends = yon_package_dependent_get(tab->module); - if (target_depends&&strcmp(target_depends,tab->package)){ + if (target_depends&&strcmp(target_depends,tab->package)&&strstr(target_depends," ")){ free(yon_char_divide_search(target_depends," ",-1)); gtk_list_store_append(window->liststore1,&itar); gtk_list_store_set(window->liststore1,&itar,0,1,1,target_depends,-1); diff --git a/ubl-settings-kernel-dialog.glade b/ubl-settings-kernel-dialog.glade index 753b4a1..7dea458 100644 --- a/ubl-settings-kernel-dialog.glade +++ b/ubl-settings-kernel-dialog.glade @@ -13,6 +13,8 @@ + + @@ -116,6 +118,7 @@ + 4 0 -- 2.35.1 From 7ae13249c577b296bcd780886026b926d9550a08 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 9 Dec 2024 15:09:07 +0600 Subject: [PATCH 11/14] Status messages logic edit --- source/ubl-settings-kernel.c | 38 +++++++++++++++++++++++++++++++----- source/ubl-settings-kernel.h | 11 +++++++++++ 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index a22a59e..2740bbc 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -391,7 +391,25 @@ void *yon_interface_update(main_window *widgets){ kernels = yon_resource_open_file(kernels_addon_path, &kernels_size); for (int i=1;iAdditionsPackageBox),kernels[i],widgets); - g_thread_new("tags_install_tread",(GThreadFunc)yon_tab_set_installed,tab); + if (i+1==kernels_size) { + g_thread_join(g_thread_new("tags_install_tread",(GThreadFunc)yon_tab_set_installed,tab)); + char *status_text = NULL; + switch (main_config.action){ + case ACTION_LOAD: + status_text = main_config.load_mode==1?main_config.local_load_success_localised:main_config.global_load_success_localised; + break; + case ACTION_SAVE: + status_text = ""; + break; + case ACTION_TERMINAL_EXECUTE_SUCCESS: + status_text = OPERATION_SUCCESS_LABEL; + break; + case ACTION_TERMINAL_EXECUTE_FAIL: + status_text = OPERATION_ERROR_LABEL; + break; + } + yon_ubl_status_box_render(status_text,BACKGROUND_IMAGE_SUCCESS_TYPE); + } gtk_widget_set_can_focus(gtk_widget_get_parent(tab->main_box),0); } } @@ -472,11 +490,10 @@ gboolean on_command_execute_success(GtkWidget *,gint status,main_window *widgets main_config.progress_active=0; g_mutex_unlock(&main_config.progress_mutex); if (!status){ - yon_ubl_status_box_render(OPERATION_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); on_update_clicked(NULL,widgets); - + main_config.action=ACTION_TERMINAL_EXECUTE_SUCCESS; } else { - yon_ubl_status_box_render(OPERATION_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + main_config.action=ACTION_TERMINAL_EXECUTE_FAIL; } gtk_widget_set_sensitive(widgets->UpdateButton,1); dictionary *dict = NULL; @@ -762,6 +779,7 @@ dialog_window *yon_dialog_window_new(){ } void on_module_install_clicked(GtkWidget *self,dictionary *dict){ + main_config.action=ACTION_TERMINAL_EXECUTE_SUCCESS; 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 = NULL; @@ -814,6 +832,7 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){ } void on_package_install_clicked(GtkWidget *self,dictionary *dict){ + main_config.action=ACTION_TERMINAL_EXECUTE_SUCCESS; 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 = NULL; @@ -876,6 +895,7 @@ void on_module_remove_done(GtkWidget *self, int state, kernels_tab *tab){ } void on_module_remove_clicked(GtkWidget *self,dictionary *dict){ + main_config.action=ACTION_TERMINAL_EXECUTE_SUCCESS; main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*); int size; @@ -965,6 +985,7 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){ } void on_package_remove_clicked(GtkWidget *self,dictionary *dict){ + main_config.action=ACTION_TERMINAL_EXECUTE_SUCCESS; main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*); int size; @@ -1269,9 +1290,16 @@ void config_init(){ main_config.addition_tabs=NULL; main_config.progress_active=0; main_config.update_active=0; + main_config.action = ACTION_LOAD; + textdomain(template_ui_LocaleName); + main_config.local_load_success_localised = LOCAL_LOAD_SUCCESS_LABEL; + main_config.global_load_success_localised = GLOBAL_LOAD_SUCCESS_LABEL; + textdomain(LocaleName); } -void on_update_clicked(GtkWidget *, main_window *widgets){ +void on_update_clicked(GtkWidget *self, main_window *widgets){ + if (self) + main_config.action=ACTION_LOAD; int lock=0; g_mutex_lock(&main_config.update_mutex); lock = main_config.update_active; diff --git a/source/ubl-settings-kernel.h b/source/ubl-settings-kernel.h index 574973f..e88d57b 100644 --- a/source/ubl-settings-kernel.h +++ b/source/ubl-settings-kernel.h @@ -75,6 +75,13 @@ string version_application; char *local; +enum ACTION_TYPE{ + ACTION_LOAD, + ACTION_SAVE, + ACTION_TERMINAL_EXECUTE_SUCCESS, + ACTION_TERMINAL_EXECUTE_FAIL +}; + typedef struct { template_config_fields GMutex mutex; @@ -85,6 +92,10 @@ typedef struct { int progress_active; config_str launch_arguments; int launch_size; + enum ACTION_TYPE action; + + char *local_load_success_localised; + char *global_load_success_localised; int update_active; GMutex update_mutex; -- 2.35.1 From 95fd04b7f8e82d535eeac82fffe5db306199e9ed Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 9 Dec 2024 15:15:48 +0600 Subject: [PATCH 12/14] Fixed additions list --- source/ubl-settings-kernel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 2740bbc..60dd6fc 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -391,8 +391,8 @@ void *yon_interface_update(main_window *widgets){ kernels = yon_resource_open_file(kernels_addon_path, &kernels_size); for (int i=1;iAdditionsPackageBox),kernels[i],widgets); + g_thread_join(g_thread_new("tags_install_tread",(GThreadFunc)yon_tab_set_installed,tab)); if (i+1==kernels_size) { - g_thread_join(g_thread_new("tags_install_tread",(GThreadFunc)yon_tab_set_installed,tab)); char *status_text = NULL; switch (main_config.action){ case ACTION_LOAD: -- 2.35.1 From e1f79ebd520bf1202b23b509806671d9526af0d5 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 9 Dec 2024 15:18:11 +0600 Subject: [PATCH 13/14] Fixed additions list --- source/ubl-settings-kernel.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index 60dd6fc..cde37b7 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -391,8 +391,9 @@ void *yon_interface_update(main_window *widgets){ kernels = yon_resource_open_file(kernels_addon_path, &kernels_size); for (int i=1;iAdditionsPackageBox),kernels[i],widgets); - g_thread_join(g_thread_new("tags_install_tread",(GThreadFunc)yon_tab_set_installed,tab)); + GThread *thr = g_thread_new("tags_install_tread",(GThreadFunc)yon_tab_set_installed,tab); if (i+1==kernels_size) { + g_thread_join(thr); char *status_text = NULL; switch (main_config.action){ case ACTION_LOAD: -- 2.35.1 From 5549d75f6fcb50524d72aa2c09a0937e899240a4 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 9 Dec 2024 17:37:57 +0600 Subject: [PATCH 14/14] Initramfs building fixes --- source/ubl-settings-kernel.c | 18 ++++++++++++++++++ source/ubl-settings-kernel.h | 8 +++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/source/ubl-settings-kernel.c b/source/ubl-settings-kernel.c index cde37b7..1a58911 100644 --- a/source/ubl-settings-kernel.c +++ b/source/ubl-settings-kernel.c @@ -459,6 +459,11 @@ install_window *yon_install_window_new(){ g_signal_connect(G_OBJECT(window->CancelButton),"clicked",G_CALLBACK(on_subwindow_close),NULL); g_signal_connect(G_OBJECT(window->BasicSwitch),"state-set",G_CALLBACK(on_basic_toggled),window); + + g_signal_connect(G_OBJECT(window->BasicSwitch),"state-set",G_CALLBACK(on_build_selection_changed),window); + g_signal_connect(G_OBJECT(window->BasicCurrentSwitch),"state-set",G_CALLBACK(on_build_selection_changed),window); + g_signal_connect(G_OBJECT(window->DebugSwitch),"state-set",G_CALLBACK(on_build_selection_changed),window); + g_signal_connect(G_OBJECT(window->UniversalSwitch),"state-set",G_CALLBACK(on_build_selection_changed),window); return window; } @@ -1360,6 +1365,15 @@ void on_changelog_clicked(GtkWidget *, kernels_tab *tab){ gtk_widget_show(window->window); } +void on_build_selection_changed(GtkWidget *,int,install_window *window){ + int base = gtk_switch_get_active(GTK_SWITCH(window->BasicSwitch)); + int base_current = gtk_switch_get_active(GTK_SWITCH(window->BasicCurrentSwitch)); + int debug = gtk_switch_get_active(GTK_SWITCH(window->DebugSwitch)); + int universal = gtk_switch_get_active(GTK_SWITCH(window->UniversalSwitch)); + if (base||base_current||debug||universal) gtk_widget_set_sensitive(window->ExecuteButton,1); + else gtk_widget_set_sensitive(window->ExecuteButton,0); +} + void on_build_execute(GtkWidget *, dictionary *dict){ main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); install_window *window = yon_dictionary_get_data(dict->first->next,install_window*); @@ -1369,6 +1383,10 @@ void on_build_execute(GtkWidget *, dictionary *dict){ int universal = gtk_switch_get_active(GTK_SWITCH(window->UniversalSwitch)); 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)); + if (yon_char_is_empty(target)){ + yon_ubl_status_box_spawn(GTK_CONTAINER(window->StatusBox),NOTHING_CHOSEN_LABEL,5,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_highlight_incorrect(window->KernelVersionCombo); + } int size=0; config_str commands = NULL; if (basic) yon_char_parsed_add_or_create_if_exists(commands,&size,build_command_basic(filename,target,drivers)); diff --git a/source/ubl-settings-kernel.h b/source/ubl-settings-kernel.h index e88d57b..e006606 100644 --- a/source/ubl-settings-kernel.h +++ b/source/ubl-settings-kernel.h @@ -56,9 +56,9 @@ #define get_active_kernel_command "cat /usr/lib/modules/$(uname -r)/pkgbase" -#define build_command_basic(target,kernel, only) yon_char_unite("ubmkuird -l -n ",target," -k ",kernel, only? " -H ":"",NULL) -#define build_command_debug(target,kernel) yon_char_unite("ubmkuird -l --addon -n ",target," -k ",kernel,NULL) -#define build_command_universal(target,kernel) yon_char_unite("ubmkuird -l --kmod -n ",target," -k ",kernel,NULL) +#define build_command_basic(target,kernel, only) yon_char_unite("ubmkuird -l",!yon_char_is_empty(target)?" -n ":"",!yon_char_is_empty(target)?target:"",!yon_char_is_empty(kernel)?" -k ":"",!yon_char_is_empty(kernel)?kernel:"", only? " -H ":"",NULL) +#define build_command_debug(target,kernel) yon_char_unite("ubmkuird -l --addon",!yon_char_is_empty(target)?" -n ":"",!yon_char_is_empty(target)?target:"",!yon_char_is_empty(kernel)?" -k ":"",!yon_char_is_empty(kernel)?kernel:"",NULL) +#define build_command_universal(target,kernel) yon_char_unite("ubmkuird -l --kmod",!yon_char_is_empty(target)?" -n ":"",!yon_char_is_empty(target)?target:"",!yon_char_is_empty(kernel)?" -k ":"",!yon_char_is_empty(kernel)?kernel:"",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" @@ -292,6 +292,8 @@ void on_info_clicked(GtkWidget *, char *, kernels_tab *tab); void on_changelog_clicked(GtkWidget *, kernels_tab *tab); +void on_build_selection_changed(GtkWidget *,int,install_window *window); + void on_build_execute(GtkWidget *, dictionary *dict); void on_building_clicked(GtkWidget *, main_window *widgets); -- 2.35.1