Test fix for terminal endwork interface update #39

Merged
asmeron merged 10 commits from YanTheKaller/ubl-settings-kernel:master into master 1 year ago

@ -1,10 +1,10 @@
NAME;PAСKAGE_UBM;PAСKAGE;DESCRIPTION NAME;PAСKAGE_UBM;PAСKAGE;DESCRIPTION
Linux 5.15 headers;ubm-002-linux515-headers;linux515-headers;The Linux kernel headers v5.15 Linux 5.15 headers;ubm-002-linux515-headers;linux515-headers;The Linux kernel headers v5.15
Linux 5.15 Docs;ubm-003-linux515-docs;linux515-docs;The Linux kernel docs v5.15 Linux 5.15 Docs;ubm-003-linux515-docs;linux515-docs;The Linux kernel docs v5.15
Linux 5.15 DKMS modules;ubm-linux515-dkms;v4l2loopback-dkms,rtl88x2bu-dkms-git,r8125-dkms,rtl8192eu-dkms,rtl8821cu-dkms-git;The Linux kernel DKMS modules v5.15 : v4l2loopback, r8168-8136, rtl88x2bu, r8125, rtl8192eu Linux 5.15 DKMS modules;ubm-linux515-dkms;;The Linux kernel DKMS modules v5.15 : v4l2loopback, r8168-8136, rtl88x2bu, r8125, rtl8192eu
Linux 6.1 headers;ubm-002-linux61-headers;linux61-headers;The Linux kernel headers v6.1 Linux 6.1 headers;ubm-002-linux61-headers;linux61-headers;The Linux kernel headers v6.1
Linux 6.1 Docs;ubm-003-linux61-docs;linux61-docs;The Linux kernel docs v6.1 Linux 6.1 Docs;ubm-003-linux61-docs;linux61-docs;The Linux kernel docs v6.1
Linux 6.1 DKMS modules;ubm-linux61-dkms;v4l2loopback-dkms,rtl88x2bu-dkms-git,r8125-dkms,rtl8192eu-dkms,rtl8821cu-dkms-git;The Linux kernel DKMS modules v6.1 : v4l2loopback, r8168-8136, rtl88x2bu, r8125, rtl8192eu Linux 6.1 DKMS modules;ubm-linux61-dkms;;The Linux kernel DKMS modules v6.1 : v4l2loopback, r8168-8136, rtl88x2bu, r8125, rtl8192eu
Linux 6.6 headers;ubm-002-linux66-headers;linux66-headers;The Linux kernel headers v6.6 Linux 6.6 headers;ubm-002-linux66-headers;linux66-headers;The Linux kernel headers v6.6
Linux 6.6 Docs;ubm-003-linux66-docs;linux66-docs;The Linux kernel docs v6.6 Linux 6.6 Docs;ubm-003-linux66-docs;linux66-docs;The Linux kernel docs v6.6
Linux 6.6 DKMS modules;ubm-linux66-dkms;v4l2loopback-dkms,rtl88x2bu-dkms-git,r8125-dkms,rtl8192eu-dkms,rtl8821cu-dkms-git;The Linux kernel DKMS modules v6.6 : v4l2loopback, r8168-8136, rtl88x2bu, r8125, rtl8192eu Linux 6.6 DKMS modules;ubm-linux66-dkms;;The Linux kernel DKMS modules v6.6 : v4l2loopback, r8168-8136, rtl88x2bu, r8125, rtl8192eu
1 NAME PAСKAGE_UBM PAСKAGE DESCRIPTION
2 Linux 5.15 headers ubm-002-linux515-headers linux515-headers The Linux kernel headers v5.15
3 Linux 5.15 Docs ubm-003-linux515-docs linux515-docs The Linux kernel docs v5.15
4 Linux 5.15 DKMS modules ubm-linux515-dkms v4l2loopback-dkms,rtl88x2bu-dkms-git,r8125-dkms,rtl8192eu-dkms,rtl8821cu-dkms-git The Linux kernel DKMS modules v5.15 : v4l2loopback, r8168-8136, rtl88x2bu, r8125, rtl8192eu
5 Linux 6.1 headers ubm-002-linux61-headers linux61-headers The Linux kernel headers v6.1
6 Linux 6.1 Docs ubm-003-linux61-docs linux61-docs The Linux kernel docs v6.1
7 Linux 6.1 DKMS modules ubm-linux61-dkms v4l2loopback-dkms,rtl88x2bu-dkms-git,r8125-dkms,rtl8192eu-dkms,rtl8821cu-dkms-git The Linux kernel DKMS modules v6.1 : v4l2loopback, r8168-8136, rtl88x2bu, r8125, rtl8192eu
8 Linux 6.6 headers ubm-002-linux66-headers linux66-headers The Linux kernel headers v6.6
9 Linux 6.6 Docs ubm-003-linux66-docs linux66-docs The Linux kernel docs v6.6
10 Linux 6.6 DKMS modules ubm-linux66-dkms v4l2loopback-dkms,rtl88x2bu-dkms-git,r8125-dkms,rtl8192eu-dkms,rtl8821cu-dkms-git The Linux kernel DKMS modules v6.6 : v4l2loopback, r8168-8136, rtl88x2bu, r8125, rtl8192eu

@ -1,4 +1,4 @@
NAME;PAСKAGE_UBM;PAСKAGE;PAСKAGE_UBM_REQUIRED;PAСKAGE_REQUIRED;TAG;DESCRIPTION NAME;PAСKAGE_UBM;PAСKAGE;PAСKAGE_UBM_REQUIRED;PAСKAGE_REQUIRED;TAG;DESCRIPTION
Linux 5.15;ubm-001-linux515;linux515;ubm-002-linux515-headers;linux515-headers;LTS, Stable, RealTime, Hardened, Recomended;The Linux kernel v5.15 and modules, headers. Manual modules: acpi_call, bbswitch, broadcom-wl, r8168, rtl8723bu, tp_smapi, vhba-module, virtualbox-host-modules, zfs Linux 5.15;ubm-001-linux515;linux515;ubm-001-linux515-headers;linux515-headers;LTS, Stable, RealTime, Hardened, Recomended;The Linux kernel v5.15 and modules, headers. Manual modules: acpi_call, bbswitch, broadcom-wl, r8168, rtl8723bu, tp_smapi, vhba-module, virtualbox-host-modules, zfs
Linux 6.1;ubm-001-linux61;linux61;ubm-002-linux61-headers;linux61-headers;LTS, Stable, RealTime, Hardened, Recomended;The Linux kernel v6.1 and modules, headers. Manual modules: acpi_call, bbswitch, broadcom-wl, r8168, rtl8723bu, tp_smapi, vhba-module, virtualbox-host-modules, zfs Linux 6.1;ubm-001-linux61;linux61;ubm-001-linux61-headers;linux61-headers;LTS, Stable, RealTime, Hardened, Recomended;The Linux kernel v6.1 and modules, headers. Manual modules: acpi_call, bbswitch, broadcom-wl, r8168, rtl8723bu, tp_smapi, vhba-module, virtualbox-host-modules, zfs
Linux 6.6;ubm-001-linux66;linux66;ubm-002-linux66-headers;linux66-headers;LTS, Stable, RealTime, Hardened, Recomended;The Linux kernel v6.6 and modules, headers. Manual modules: acpi_call, bbswitch, broadcom-wl, r8168, rtl8723bu, tp_smapi, vhba-module, virtualbox-host-modules, zfs Linux 6.6;ubm-001-linux66;linux66;ubm-001-linux66-headers;linux66-headers;LTS, Stable, RealTime, Hardened, Recomended;The Linux kernel v6.6 and modules, headers. Manual modules: acpi_call, bbswitch, broadcom-wl, r8168, rtl8723bu, tp_smapi, vhba-module, virtualbox-host-modules, zfs
1 NAME PAСKAGE_UBM PAСKAGE PAСKAGE_UBM_REQUIRED PAСKAGE_REQUIRED TAG DESCRIPTION
2 Linux 5.15 ubm-001-linux515 linux515 ubm-002-linux515-headers ubm-001-linux515-headers linux515-headers LTS, Stable, RealTime, Hardened, Recomended The Linux kernel v5.15 and modules, headers. Manual modules: acpi_call, bbswitch, broadcom-wl, r8168, rtl8723bu, tp_smapi, vhba-module, virtualbox-host-modules, zfs
3 Linux 6.1 ubm-001-linux61 linux61 ubm-002-linux61-headers ubm-001-linux61-headers linux61-headers LTS, Stable, RealTime, Hardened, Recomended The Linux kernel v6.1 and modules, headers. Manual modules: acpi_call, bbswitch, broadcom-wl, r8168, rtl8723bu, tp_smapi, vhba-module, virtualbox-host-modules, zfs
4 Linux 6.6 ubm-001-linux66 linux66 ubm-002-linux66-headers ubm-001-linux66-headers linux66-headers LTS, Stable, RealTime, Hardened, Recomended The Linux kernel v6.6 and modules, headers. Manual modules: acpi_call, bbswitch, broadcom-wl, r8168, rtl8723bu, tp_smapi, vhba-module, virtualbox-host-modules, zfs

@ -66,28 +66,32 @@ void on_config_save(GtkWidget *, main_window *widgets){
main_config.save_config=2; main_config.save_config=2;
template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_BOTH,yon_config_get_custom_command("global"),NULL); template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_BOTH,yon_config_get_custom_command("global"),NULL);
if (window){}; if (window){};
yon_interface_update(widgets); on_update_clicked(NULL,widgets);
} }
void on_config_global_save(GtkWidget *, main_window *widgets){ void on_config_global_save(GtkWidget *, main_window *widgets){
main_config.save_config=0; main_config.save_config=0;
template_saving_window *window = yon_save_proceed("global",YON_CONFIG_GLOBAL,yon_config_get_custom_command("global"),NULL); template_saving_window *window = yon_save_proceed("global",YON_CONFIG_GLOBAL,yon_config_get_custom_command("global"),NULL);
if (window){}; if (window){};
yon_interface_update(widgets); on_update_clicked(NULL,widgets);
} }
void on_config_local_save(GtkWidget *, main_window *widgets){ void on_config_local_save(GtkWidget *, main_window *widgets){
main_config.save_config=1; main_config.save_config=1;
template_saving_window *window = yon_save_proceed("system",YON_CONFIG_LOCAL,yon_config_get_custom_command("system"),NULL); template_saving_window *window = yon_save_proceed("system",YON_CONFIG_LOCAL,yon_config_get_custom_command("system"),NULL);
if (window){}; if (window){};
yon_interface_update(widgets); on_update_clicked(NULL,widgets);
} }
void on_config_custom_save(GtkWidget *, main_window *widgets){ void on_config_custom_save(GtkWidget *, main_window *widgets){
main_config.save_config=1; main_config.save_config=1;
template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_CUSTOM,yon_config_get_custom_command("system"),NULL); template_saving_window *window = yon_save_proceed(NULL,YON_CONFIG_CUSTOM,yon_config_get_custom_command("system"),NULL);
if (window){}; if (window){};
yon_interface_update(widgets); on_update_clicked(NULL,widgets);
} }
@ -97,7 +101,8 @@ void on_config_local_load(GtkWidget *, main_window *widgets){
yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
textdomain(LocaleName); textdomain(LocaleName);
main_config.load_mode=1; main_config.load_mode=1;
yon_interface_update(widgets); on_update_clicked(NULL,widgets);
} }
void on_config_global_load(GtkWidget *, main_window *widgets){ void on_config_global_load(GtkWidget *, main_window *widgets){
@ -106,7 +111,8 @@ void on_config_global_load(GtkWidget *, main_window *widgets){
yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
textdomain(LocaleName); textdomain(LocaleName);
main_config.load_mode=0; main_config.load_mode=0;
yon_interface_update(widgets); on_update_clicked(NULL,widgets);
} }
void on_config_custom_load(GtkWidget *,main_window *widgets){ void on_config_custom_load(GtkWidget *,main_window *widgets){
@ -115,7 +121,8 @@ void on_config_custom_load(GtkWidget *,main_window *widgets){
yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
textdomain(LocaleName); textdomain(LocaleName);
main_config.load_mode=3; main_config.load_mode=3;
yon_interface_update(widgets); on_update_clicked(NULL,widgets);
} }
gboolean yon_tab_create_tags(kernels_tab *tab){ gboolean yon_tab_create_tags(kernels_tab *tab){
@ -125,31 +132,47 @@ gboolean yon_tab_create_tags(kernels_tab *tab){
} }
g_list_free(list); g_list_free(list);
if (!getuid()){ if (!getuid()){
if (tab->module_installed){ switch(tab->module_installed){
case 1:{
yon_tag_add(GTK_BOX(tab->install_tags_box),MODULE_INSTALLED_LABEL,"tag_green",NULL); 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); gtk_image_set_from_icon_name(GTK_IMAGE(tab->module_icon),module_icon_path,GTK_ICON_SIZE_BUTTON);
gtk_widget_show(tab->remove_module_button); gtk_widget_show(tab->remove_module_button);
gtk_widget_show(tab->update_module_button); gtk_widget_show(tab->update_module_button);
gtk_widget_hide(tab->install_module_button);
gtk_widget_hide(tab->install_module_button); gtk_widget_set_tooltip_text(tab->module_icon,MODULE_INSTALLED_LABEL);
} else { } break;
gtk_widget_hide(tab->remove_module_button); case 0:{
gtk_widget_hide(tab->update_module_button); gtk_widget_hide(tab->remove_module_button);
gtk_widget_hide(tab->update_module_button);
gtk_widget_show(tab->install_module_button); gtk_widget_show(tab->install_module_button);
} break;
case -1: {
gtk_widget_hide(tab->remove_module_button);
gtk_widget_hide(tab->update_module_button);
gtk_widget_hide(tab->install_module_button);
gtk_widget_hide(tab->module_label);
} break;
} }
{ switch (tab->package_installed){
if (tab->package_installed){ case 1: {
yon_tag_add(GTK_BOX(tab->install_tags_box),PACKAGE_INSTALLED_LABEL,"tag_green",NULL); 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); gtk_image_set_from_icon_name(GTK_IMAGE(tab->package_icon),package_icon_path,GTK_ICON_SIZE_BUTTON);
gtk_widget_hide(tab->install_package_button); gtk_widget_hide(tab->install_package_button);
gtk_widget_show(tab->remove_package_button); gtk_widget_show(tab->remove_package_button);
gtk_widget_show(tab->update_package_button); gtk_widget_show(tab->update_package_button);
} else { gtk_widget_set_tooltip_text(tab->package_icon,PACKAGE_INSTALLED_LABEL);
} break;
case 0:{
gtk_widget_show(tab->install_package_button); gtk_widget_show(tab->install_package_button);
gtk_widget_hide(tab->remove_package_button); gtk_widget_hide(tab->remove_package_button);
gtk_widget_hide(tab->update_package_button); gtk_widget_hide(tab->update_package_button);
}break;
case -1:{
gtk_widget_hide(tab->remove_package_button);
gtk_widget_hide(tab->update_package_button);
gtk_widget_hide(tab->install_package_button);
gtk_widget_hide(tab->package_label);
} }
} }
if (tab->package_installed||tab->module_installed){ if (tab->package_installed||tab->module_installed){
@ -157,7 +180,9 @@ gboolean yon_tab_create_tags(kernels_tab *tab){
char *launched = config(KERNEL_BOOT_parameter); char *launched = config(KERNEL_BOOT_parameter);
int boot_size; int boot_size;
config_str boot_run = yon_config_load(get_active_kernel_command,&boot_size); config_str boot_run = yon_config_load(get_active_kernel_command,&boot_size);
yon_char_remove_last_symbol(boot_run[0],'\n'); if (boot_size>0){
yon_char_remove_last_symbol(boot_run[0],'\n');
}
if ((!(launched&&!strcmp(tab->package,launched))&&(strcmp(tab->package,boot_run[0])))){ if ((!(launched&&!strcmp(tab->package,launched))&&(strcmp(tab->package,boot_run[0])))){
gtk_widget_show(tab->launch_button); gtk_widget_show(tab->launch_button);
@ -166,14 +191,10 @@ gboolean yon_tab_create_tags(kernels_tab *tab){
if(!getuid()){ if(!getuid()){
if (boot_run&&!strcmp(boot_run[0],tab->package)){ if (boot_run&&!strcmp(boot_run[0],tab->package)){
yon_tag_add(GTK_BOX(tab->install_tags_box),RUNNING_LABEL,"tag_green",NULL); yon_tag_add(GTK_BOX(tab->install_tags_box),RUNNING_LABEL,"tag_green",NULL);
gtk_widget_hide(tab->update_module_button);
gtk_widget_hide(tab->update_package_button);
gtk_widget_hide(tab->launch_button); gtk_widget_hide(tab->launch_button);
} else if (!yon_char_is_empty(launched)&&!strcmp(launched,tab->package)){ } 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); 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->launch_button);
gtk_widget_hide(tab->update_module_button);
gtk_widget_hide(tab->update_package_button);
} }
} }
} }
@ -188,6 +209,10 @@ gboolean yon_tab_create_tags(kernels_tab *tab){
yon_tag_add(GTK_BOX(tab->install_tags_box),UNKNOWN_LABEL,"tag_grey",NULL); yon_tag_add(GTK_BOX(tab->install_tags_box),UNKNOWN_LABEL,"tag_grey",NULL);
} }
gtk_widget_show(tab->main_box); gtk_widget_show(tab->main_box);
g_mutex_lock(&main_config.update_mutex);
main_config.update_active--;
g_mutex_unlock(&main_config.update_mutex);
return G_SOURCE_REMOVE; return G_SOURCE_REMOVE;
} }
@ -200,85 +225,108 @@ char *yon_package_string_set(char *target){
} }
void *yon_tab_set_installed(kernels_tab *tab){ void *yon_tab_set_installed(kernels_tab *tab){
g_mutex_lock(&main_config.update_mutex);
main_config.update_active++;
g_mutex_unlock(&main_config.update_mutex);
char *target_module = yon_package_string_set(tab->module); char *target_module = yon_package_string_set(tab->module);
char *target_package = yon_package_string_set(tab->package); char *target_package = yon_package_string_set(tab->package);
char *check_install_command = NULL;
char *check_install_command = get_package_is_installed_command(target_module); //if module installed if (yon_char_is_empty(target_module)){
if (!system(yon_debug_output("%s\n",check_install_command))){ tab->module_installed=-1;
tab->module_installed=1; } else {
} else tab->module_installed=0; check_install_command = get_package_is_installed_command(target_module); //if module installed
free(check_install_command); if (!system(yon_debug_output("%s\n",check_install_command))){
tab->module_installed=1;
check_install_command = get_package_is_installed_command(target_package); //if package installed } else tab->module_installed=0;
if (!system(yon_debug_output("%s\n",check_install_command))){ free(check_install_command);
tab->package_installed=1;
} else tab->package_installed=0; check_install_command = get_package_is_updated_command(target_module); //if module has updates
free(check_install_command); if (!system(yon_debug_output("%s\n",check_install_command))){
tab->module_updated = 0;
check_install_command = get_package_is_updated_command(target_module); //if module has updates } else tab->module_updated = 1;
if (!system(yon_debug_output("%s\n",check_install_command))){ free(check_install_command);
tab->module_updated = 0; }
} else tab->module_updated = 1; if (yon_char_is_empty(target_package)){
free(check_install_command); tab->package_installed=-1;
} else {
check_install_command = get_package_is_updated_command(target_package); //if package has updates check_install_command = get_package_is_installed_command(target_package); //if package installed
if (!system(yon_debug_output("%s\n",check_install_command))){ if (!system(yon_debug_output("%s\n",check_install_command))){
tab->package_updated = 0; tab->package_installed=1;
} else tab->package_updated = 1; } else tab->package_installed=0;
free(check_install_command); free(check_install_command);
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;
free(check_install_command);
}
if (tab->package_installed==-1&&tab->module_installed==-1){
gtk_widget_destroy(tab->main_box);
tab->main_box=NULL;
}
gdk_threads_add_idle((GSourceFunc)yon_tab_create_tags,tab); gdk_threads_add_idle((GSourceFunc)yon_tab_create_tags,tab);
return NULL; return NULL;
} }
void *yon_interface_update(main_window *widgets){ void *yon_interface_update(main_window *widgets){
yon_ubl_status_box_render(LOADING_LABEL,BACKGROUND_IMAGE_INFO_TYPE); int lock = 0;
if (!main_config.kernel_tabs){ g_mutex_lock(&main_config.update_mutex);
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelsPackageBox)); lock=main_config.update_active;
for (guint i=0;i<g_list_length(list);i++){ g_mutex_unlock(&main_config.update_mutex);
gtk_widget_destroy(g_list_nth_data(list,i)); if (!lock){
yon_ubl_status_box_render(LOADING_LABEL,BACKGROUND_IMAGE_INFO_TYPE);
{
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->KernelsPackageBox));
if (g_list_length(list)>0){
for (guint i=0;i<g_list_length(list);i++){
gtk_widget_destroy(g_list_nth_data(list,i));
}
g_list_free(list);
}
} }
g_list_free(list); {
} GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdditionsPackageBox));
if (!main_config.addition_tabs){ if (g_list_length(list)>0){
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->AdditionsPackageBox)); for (guint i=0;i<g_list_length(list);i++){
for (guint i=0;i<g_list_length(list);i++){ gtk_widget_destroy(g_list_nth_data(list,i));
gtk_widget_destroy(g_list_nth_data(list,i)); }
g_list_free(list);
}
} }
g_list_free(list); int kernels_size;
} config_str kernels = yon_resource_open_file(kernels_path, &kernels_size);
int kernels_size;
config_str kernels = yon_resource_open_file(kernels_path, &kernels_size);
for (int i=1;i<kernels_size;i++){ for (int i=1;i<kernels_size;i++){
kernels_tab *tab = yon_tab_row_new(GTK_LIST_BOX(widgets->KernelsPackageBox),kernels[i],widgets); kernels_tab *tab = yon_tab_row_new(GTK_LIST_BOX(widgets->KernelsPackageBox),kernels[i],widgets);
g_thread_new("tags_install_tread",(GThreadFunc)yon_tab_set_installed,tab); g_thread_new("tags_install_tread",(GThreadFunc)yon_tab_set_installed,tab);
{ {
GList *list = gtk_container_get_children(GTK_CONTAINER(tab->run_tags_box)); GList *list = gtk_container_get_children(GTK_CONTAINER(tab->run_tags_box));
for (guint i=0;i<g_list_length(list);i++){ for (guint i=0;i<g_list_length(list);i++){
gtk_widget_destroy(g_list_nth_data(list,i)); gtk_widget_destroy(g_list_nth_data(list,i));
}
g_list_free(list);}
gtk_widget_set_can_focus(gtk_widget_get_parent(tab->main_box),0);
} }
g_list_free(list);} yon_char_parsed_free(kernels,kernels_size);
gtk_widget_set_can_focus(gtk_widget_get_parent(tab->main_box),0); kernels = yon_resource_open_file(kernels_addon_path, &kernels_size);
} for (int i=1;i<kernels_size;i++){
yon_char_parsed_free(kernels,kernels_size); additions_kernels_tab *tab = yon_additions_tab_row_new(GTK_LIST_BOX(widgets->AdditionsPackageBox),kernels[i],widgets);
kernels = yon_resource_open_file(kernels_addon_path, &kernels_size); g_thread_new("tags_install_tread",(GThreadFunc)yon_tab_set_installed,tab);
for (int i=1;i<kernels_size;i++){ gtk_widget_set_can_focus(gtk_widget_get_parent(tab->main_box),0);
additions_kernels_tab *tab = yon_additions_tab_row_new(GTK_LIST_BOX(widgets->AdditionsPackageBox),kernels[i],widgets); }
g_thread_new("tags_install_tread",(GThreadFunc)yon_tab_set_installed,tab); textdomain(template_ui_LocaleName);
gtk_widget_set_can_focus(gtk_widget_get_parent(tab->main_box),0); switch (main_config.load_mode){
} case 0: yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
textdomain(template_ui_LocaleName); break;
switch (main_config.load_mode){ case 1: yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
case 0: yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); break;
break; case 3: yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
case 1: yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); break;
break; }
case 3: yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); textdomain(LocaleName);
break;
} }
textdomain(LocaleName);
return NULL; return NULL;
} }
@ -344,7 +392,8 @@ gboolean on_command_execute_success(GtkWidget *,gint status,main_window *widgets
g_mutex_unlock(&main_config.progress_mutex); g_mutex_unlock(&main_config.progress_mutex);
if (!status){ if (!status){
yon_ubl_status_box_render(OPERATION_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(OPERATION_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
yon_interface_update(widgets); on_update_clicked(NULL,widgets);
} else { } else {
yon_ubl_status_box_render(OPERATION_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_render(OPERATION_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
} }
@ -393,7 +442,8 @@ gboolean yon_terminal_get_progress(main_window *widgets){
void *yon_command_execute_async(char *command,main_window *widgets){ void *yon_command_execute_async(char *command,main_window *widgets){
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->InstallationProgress),0); gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->InstallationProgress),0);
vte_terminal_reset(VTE_TERMINAL(widgets->InstallTerminal),0,1); vte_terminal_reset(VTE_TERMINAL(widgets->InstallTerminal),0,1);
yon_terminal_integrated_start_shell(widgets->InstallTerminal,yon_debug_output("%s\n",command),on_command_execute_success,widgets); yon_terminal_integrated_start_shell(widgets->InstallTerminal,yon_debug_output("%s\n",command),NULL,NULL);
g_signal_connect_after(G_OBJECT(widgets->InstallTerminal),"child-exited",G_CALLBACK(on_command_execute_success),widgets);
// yon_terminal_integrated_start(widgets->InstallTerminal,yon_debug_output("%s\n",command)); // yon_terminal_integrated_start(widgets->InstallTerminal,yon_debug_output("%s\n",command));
glong columns = vte_terminal_get_column_count(VTE_TERMINAL(widgets->InstallTerminal)); glong columns = vte_terminal_get_column_count(VTE_TERMINAL(widgets->InstallTerminal));
vte_terminal_set_size(VTE_TERMINAL(widgets->InstallTerminal),columns,20); vte_terminal_set_size(VTE_TERMINAL(widgets->InstallTerminal),columns,20);
@ -477,7 +527,11 @@ dialog_window *yon_dialog_window_new(){
void on_module_install_clicked(GtkWidget *self,dictionary *dict){ void on_module_install_clicked(GtkWidget *self,dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*); kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*);
char *action_text = MODULE_INSTALL_CONFIRMATION_LABEL(tab->name); char *action_text = NULL;
if (self == tab->update_module_button)
action_text = KERNEL_MODULE_UPDATE_CONFIRMATION_LABEL(tab->name);
else
action_text = KERNEL_MODULE_INSTALL_CONFIRMATION_LABEL(tab->name);
if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){
dialog_window *window = yon_dialog_window_new(); dialog_window *window = yon_dialog_window_new();
yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window); yon_dictionary_add_or_create_if_exists_with_data(dict,"window",window);
@ -504,7 +558,10 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){
} else { } else {
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
data->action_text = MODULE_INSTALL_CONFIRMATION_LABEL(tab->name); if (self == tab->update_module_button)
data->action_text = ADDITION_MODULE_UPDATE_CONFIRMATION_LABEL(tab->name);
else
data->action_text = ADDITION_MODULE_INSTALL_CONFIRMATION_LABEL(tab->name);
data->function = NULL; data->function = NULL;
data->data = NULL; data->data = NULL;
if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){ if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){
@ -519,7 +576,11 @@ void on_module_install_clicked(GtkWidget *self,dictionary *dict){
void on_package_install_clicked(GtkWidget *self,dictionary *dict){ void on_package_install_clicked(GtkWidget *self,dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*); kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*);
char *action_text = MODULE_INSTALL_CONFIRMATION_LABEL(tab->name); char *action_text = NULL;
if (self == tab->update_module_button)
action_text = KERNEL_PACKAGE_UPDATE_CONFIRMATION_LABEL(tab->name);
else
action_text = KERNEL_PACKAGE_INSTALL_CONFIRMATION_LABEL(tab->name);
if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){ if (!gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))){
dialog_window *window = yon_dialog_window_new(); dialog_window *window = yon_dialog_window_new();
g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_package_install_accept),dict); g_signal_connect(G_OBJECT(window->AcceptButton),"clicked",G_CALLBACK(on_package_install_accept),dict);
@ -546,7 +607,10 @@ void on_package_install_clicked(GtkWidget *self,dictionary *dict){
} else { } else {
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
data->action_text = MODULE_INSTALL_CONFIRMATION_LABEL(tab->name); if (self == tab->update_package_button)
data->action_text = ADDITION_PACKAGE_UPDATE_CONFIRMATION_LABEL(tab->name);
else
data->action_text = ADDITION_PACKAGE_INSTALL_CONFIRMATION_LABEL(tab->name);
data->function = NULL; data->function = NULL;
data->data = NULL; data->data = NULL;
if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){ if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){
@ -569,8 +633,33 @@ void on_module_remove_done(GtkWidget *self, int state, kernels_tab *tab){
void on_module_remove_clicked(GtkWidget *self,dictionary *dict){ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*); kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*);
int size;
config_str cnf = yon_config_load(SAVE_MODE_GET_COMMAND,&size);
yon_char_remove_last_symbol(cnf[0],'\n');
SAVE_MODE_TYPE type = yon_ubl_save_mode_get_type(cnf[0]);
int installed_kernels=0;
dictionary *cur_ker=NULL;
for_dictionaries(cur_ker,main_config.kernel_tabs){
switch(type){
case SAVE_MODE_RAM_HOME:
case SAVE_MODE_SANDBOX:{
if (((kernels_tab*)cur_ker->data)->module_installed){
installed_kernels++;
} break;
default:
if (((kernels_tab*)cur_ker->data)->package_installed||((kernels_tab*)cur_ker->data)->module_installed){
installed_kernels++;
}
} break;
}
}
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
data->action_text = MODULE_REMOVE_CONFIRMATION_LABEL(tab->name); if (installed_kernels>1){
data->action_text = KERNEL_MODULE_REMOVE_CONFIRMATION_LABEL(tab->name);
} else if (installed_kernels==1){
data->action_text = KERNEL_REMOVE_LAST_CONFIRMATION_LABEL(tab->name);
}
data->function = NULL; data->function = NULL;
data->data = NULL; data->data = NULL;
if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){ if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){
@ -588,8 +677,33 @@ void on_module_remove_clicked(GtkWidget *self,dictionary *dict){
void on_package_remove_clicked(GtkWidget *self,dictionary *dict){ void on_package_remove_clicked(GtkWidget *self,dictionary *dict){
main_window *widgets = yon_dictionary_get_data(dict->first,main_window*); main_window *widgets = yon_dictionary_get_data(dict->first,main_window*);
kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*); kernels_tab *tab = yon_dictionary_get_data(dict->first->next,kernels_tab*);
int size;
config_str cnf = yon_config_load(SAVE_MODE_GET_COMMAND,&size);
yon_char_remove_last_symbol(cnf[0],'\n');
SAVE_MODE_TYPE type = yon_ubl_save_mode_get_type(cnf[0]);
int installed_kernels=0;
dictionary *cur_ker=NULL;
for_dictionaries(cur_ker,main_config.kernel_tabs){
switch(type){
case SAVE_MODE_RAM_HOME:
case SAVE_MODE_SANDBOX:{
if (((kernels_tab*)cur_ker->data)->module_installed){
installed_kernels++;
} break;
default:
if (((kernels_tab*)cur_ker->data)->package_installed||((kernels_tab*)cur_ker->data)->module_installed){
installed_kernels++;
}
} break;
}
}
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data));
data->action_text = PACKAGE_REMOVE_CONFIRMATION_LABEL(tab->name); if (installed_kernels>1){
data->action_text = KERNEL_PACKAGE_REMOVE_CONFIRMATION_LABEL(tab->name);
} else if (installed_kernels==1){
data->action_text = KERNEL_REMOVE_LAST_CONFIRMATION_LABEL(tab->name);
}
data->function = NULL; data->function = NULL;
data->data = NULL; data->data = NULL;
int resp = yon_confirmation_dialog_call(self,data); int resp = yon_confirmation_dialog_call(self,data);
@ -611,7 +725,8 @@ void on_launch_cliked(GtkWidget *self,dictionary *dict){
data->data = NULL; data->data = NULL;
if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){ if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){
yon_config_set(KERNEL_BOOT_parameter,tab->package); yon_config_set(KERNEL_BOOT_parameter,tab->package);
yon_interface_update(widgets); on_update_clicked(NULL,widgets);
} }
} }
@ -657,7 +772,10 @@ kernels_tab *yon_tab_row_new(GtkListBox *target, char *target_string, main_windo
g_signal_connect(G_OBJECT(tab->remove_package_button),"clicked",G_CALLBACK(on_package_remove_clicked),dict); g_signal_connect(G_OBJECT(tab->remove_package_button),"clicked",G_CALLBACK(on_package_remove_clicked),dict);
g_signal_connect(G_OBJECT(tab->changelog_button),"clicked",G_CALLBACK(on_changelog_clicked),tab); g_signal_connect(G_OBJECT(tab->changelog_button),"clicked",G_CALLBACK(on_changelog_clicked),tab);
g_signal_connect(G_OBJECT(tab->launch_button),"clicked",G_CALLBACK(on_launch_cliked),dict); g_signal_connect(G_OBJECT(tab->launch_button),"clicked",G_CALLBACK(on_launch_cliked),dict);
g_signal_connect(G_OBJECT(tab->module_label),"activate-link",G_CALLBACK(on_info_clicked),tab);
g_signal_connect(G_OBJECT(tab->package_label),"activate-link",G_CALLBACK(on_info_clicked),tab);
if(getuid()){ if(getuid()){
gtk_widget_set_sensitive(tab->launch_button,0); gtk_widget_set_sensitive(tab->launch_button,0);
gtk_widget_set_sensitive(tab->remove_module_button,0); gtk_widget_set_sensitive(tab->remove_module_button,0);
@ -671,8 +789,8 @@ kernels_tab *yon_tab_row_new(GtkListBox *target, char *target_string, main_windo
tab->module = yon_char_new(parsed[1]); tab->module = yon_char_new(parsed[1]);
tab->package = yon_char_new(parsed[2]); tab->package = yon_char_new(parsed[2]);
char *name = yon_char_unite("<b>",tab->name,"</b>",NULL); char *name = yon_char_unite("<b>",tab->name,"</b>",NULL);
char *module = yon_char_unite("<i>",MODULE_LABEL," ",tab->module,"</i>",NULL); char *module = yon_char_unite("<i>",MODULE_LABEL," <a href=\"\">",tab->module,"</a></i>",NULL);
char *package = yon_char_unite("<i>",PACKAGE_LABEL," ",tab->package,"</i>",NULL); char *package = yon_char_unite("<i>",PACKAGE_LABEL," <a href=\"\">",tab->package,"</a></i>",NULL);
yon_dictionary_add_or_create_if_exists_with_data(main_config.kernel_tabs,tab->package,tab); yon_dictionary_add_or_create_if_exists_with_data(main_config.kernel_tabs,tab->package,tab);
@ -759,14 +877,17 @@ additions_kernels_tab *yon_additions_tab_row_new(GtkListBox *target, char *targe
g_signal_connect(G_OBJECT(tab->install_package_button),"clicked",G_CALLBACK(on_package_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); g_signal_connect(G_OBJECT(tab->remove_module_button),"clicked",G_CALLBACK(on_module_remove_clicked),dict);
g_signal_connect(G_OBJECT(tab->remove_package_button),"clicked",G_CALLBACK(on_package_remove_clicked),dict); g_signal_connect(G_OBJECT(tab->remove_package_button),"clicked",G_CALLBACK(on_package_remove_clicked),dict);
g_signal_connect(G_OBJECT(tab->module_label),"activate-link",G_CALLBACK(on_info_clicked),tab);
g_signal_connect(G_OBJECT(tab->package_label),"activate-link",G_CALLBACK(on_info_clicked),tab);
gtk_list_box_insert(target,tab->main_box,-1); gtk_list_box_insert(target,tab->main_box,-1);
tab->name = yon_char_new(parsed[0]); tab->name = yon_char_new(parsed[0]);
tab->module = yon_char_new(parsed[1]); tab->module = yon_char_new(parsed[1]);
tab->package = yon_char_new(parsed[2]); tab->package = yon_char_new(parsed[2]);
char *name = yon_char_unite("<b>",tab->name,"</b>",NULL); char *name = yon_char_unite("<b>",tab->name,"</b>",NULL);
char *module = yon_char_unite("<i>",MODULE_LABEL," ",tab->module,"</i>",NULL); char *module = yon_char_unite("<i>",MODULE_LABEL," <a href=\"\">",tab->module,"</a></i>",NULL);
char *package = yon_char_unite("<i>",PACKAGE_LABEL," ",tab->package,"</i>",NULL); char *package = yon_char_unite("<i>",PACKAGE_LABEL," <a href=\"\">",tab->package,"</a></i>",NULL);
yon_dictionary_add_or_create_if_exists_with_data(main_config.addition_tabs,tab->package,tab); yon_dictionary_add_or_create_if_exists_with_data(main_config.addition_tabs,tab->package,tab);
@ -804,58 +925,51 @@ void config_init(){
main_config.load_mode=1; main_config.load_mode=1;
main_config.save_config=1; main_config.save_config=1;
main_config.kernel_tabs=NULL; main_config.kernel_tabs=NULL;
main_config.addition_tabs=NULL;
main_config.progress_active=0; main_config.progress_active=0;
main_config.update_active=0;
} }
void on_update_clicked(GtkWidget *, main_window *widgets){ void on_update_clicked(GtkWidget *, main_window *widgets){
yon_dictionary_free_all(main_config.kernel_tabs,free); int lock=0;
yon_dictionary_free_all(main_config.addition_tabs,free); g_mutex_lock(&main_config.update_mutex);
main_config.kernel_tabs=NULL; lock = main_config.update_active;
main_config.addition_tabs=NULL; g_mutex_unlock(&main_config.update_mutex);
if (!lock){
yon_dictionary_free_all(main_config.kernel_tabs,free);
yon_dictionary_free_all(main_config.addition_tabs,free);
main_config.kernel_tabs=NULL;
main_config.addition_tabs=NULL;
yon_interface_update(widgets); yon_interface_update(widgets);
}
void on_selection_changed(GtkWidget *, GtkListBoxRow* row, main_window *widgets){
if (row){
gtk_widget_set_sensitive(widgets->InfoButton,1);
} else {
gtk_widget_set_sensitive(widgets->InfoButton,0);
} }
} }
void on_info_clicked(GtkWidget *, main_window *widgets){ void on_info_clicked(GtkWidget *self, char *, kernels_tab *tab){
info_window *window = yon_info_window_new(); info_window *window = yon_info_window_new();
yon_gtk_window_setup(GTK_WINDOW(window->window),GTK_WINDOW(widgets->Window),INFO_TITLE_LABEL,icon_path,"info_window"); yon_gtk_window_setup(GTK_WINDOW(window->window),NULL,INFO_TITLE_LABEL,icon_path,"info_window");
GtkWidget *current_tree=NULL; char *package=NULL;
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){ if (self == tab->module_label){
current_tree = widgets->KernelsPackageBox; package = yon_char_new(tab->module);
} else { } else {
current_tree = widgets->AdditionsPackageBox; package = yon_char_new(tab->package);
} }
GtkListBoxRow *target = gtk_list_box_get_selected_row(GTK_LIST_BOX(current_tree)); int size;
if (target){
GList *list = gtk_container_get_children(GTK_CONTAINER(target)); if (strstr(package,",")){
GList *list2 = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(list,0)));
GList *list3 = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(list2,0))); char *temp = yon_char_replace(package,","," ");
GList *list4 = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(list3,2))); free(package);
char * target_str = yon_char_new((char*)gtk_label_get_text(GTK_LABEL(g_list_nth_data(list4,1)))); package = temp;
int size; }
char *package=NULL;
if ((package = strstr(target_str,": "))){ config_str info = yon_config_load(get_package_info_command(package),&size);
package+=2; if (size!=-1){
if (strstr(package,",")){ char *final_text = yon_char_parsed_to_string(info,size,"");
package = yon_char_replace(package,","," "); gtk_label_set_text(GTK_LABEL(window->InfoLabel),final_text);
} free(final_text);
} } else {
config_str info = yon_config_load(get_package_info_command(package),&size); gtk_label_set_text(GTK_LABEL(window->InfoLabel),PACKAGE_NOT_FOUND_LABEL);
if (size!=-1){
char *final_text = yon_char_parsed_to_string(info,size,"");
gtk_label_set_text(GTK_LABEL(window->InfoLabel),final_text);
free(final_text);
} else {
gtk_label_set_text(GTK_LABEL(window->InfoLabel),PACKAGE_NOT_FOUND_LABEL);
}
} }
gtk_widget_show(window->window); gtk_widget_show(window->window);
} }
@ -972,8 +1086,6 @@ void yon_main_window_complete(main_window *widgets){
{ {
widgets->MainNotebook = yon_gtk_builder_get_widget(builder, "MainNotebook"); widgets->MainNotebook = yon_gtk_builder_get_widget(builder, "MainNotebook");
widgets->UpdateButton = yon_gtk_builder_get_widget(builder, "UpdateButton"); widgets->UpdateButton = yon_gtk_builder_get_widget(builder, "UpdateButton");
widgets->InfoButton = yon_gtk_builder_get_widget(builder, "InfoButton");
widgets->LogButton = yon_gtk_builder_get_widget(builder, "LogButton");
widgets->BuildingButton = yon_gtk_builder_get_widget(builder, "BuildingButton"); widgets->BuildingButton = yon_gtk_builder_get_widget(builder, "BuildingButton");
widgets->KernelsUpperTree = yon_gtk_builder_get_widget(builder, "KernelsUpperTree"); widgets->KernelsUpperTree = yon_gtk_builder_get_widget(builder, "KernelsUpperTree");
widgets->KernelsTree = yon_gtk_builder_get_widget(builder, "KernelsTree"); widgets->KernelsTree = yon_gtk_builder_get_widget(builder, "KernelsTree");
@ -999,11 +1111,8 @@ void yon_main_window_complete(main_window *widgets){
widgets->ButtonsSizeGroup = GTK_SIZE_GROUP(gtk_builder_get_object(builder,"ButtonsSizeGroup")); widgets->ButtonsSizeGroup = GTK_SIZE_GROUP(gtk_builder_get_object(builder,"ButtonsSizeGroup"));
g_signal_connect(G_OBJECT(widgets->UpdateButton),"clicked",G_CALLBACK(on_update_clicked),widgets); g_signal_connect(G_OBJECT(widgets->UpdateButton),"clicked",G_CALLBACK(on_update_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->InfoButton),"clicked",G_CALLBACK(on_info_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->BuildingButton),"clicked",G_CALLBACK(on_building_clicked),widgets); g_signal_connect(G_OBJECT(widgets->BuildingButton),"clicked",G_CALLBACK(on_building_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->MoreButton),"clicked",G_CALLBACK(on_terminal_revealer_open),widgets); g_signal_connect(G_OBJECT(widgets->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->SaveMenuItem),"activate",G_CALLBACK(on_config_save),widgets);
@ -1014,6 +1123,11 @@ void yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets); g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets);
g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets); g_signal_connect(G_OBJECT(widgets->LoadCustomMenuItem),"activate",G_CALLBACK(on_config_custom_load),widgets);
int paned_pos=0;
if (yon_window_config_get_parameter("settings","paned_pos",&paned_pos,YON_TYPE_INT)) {
gtk_paned_set_position(GTK_PANED(widgets->TerminalPaned),paned_pos);
}
yon_root_button_setup((template_main_window*)widgets,main_config.launch_arguments,main_config.launch_size); yon_root_button_setup((template_main_window*)widgets,main_config.launch_arguments,main_config.launch_size);
if (getuid()){ if (getuid()){
gtk_widget_set_sensitive(widgets->BuildingButton,0); gtk_widget_set_sensitive(widgets->BuildingButton,0);
@ -1025,10 +1139,11 @@ void yon_main_window_complete(main_window *widgets){
glong columns = vte_terminal_get_column_count(VTE_TERMINAL(widgets->InstallTerminal)); glong columns = vte_terminal_get_column_count(VTE_TERMINAL(widgets->InstallTerminal));
vte_terminal_set_size(VTE_TERMINAL(widgets->InstallTerminal),columns,20); vte_terminal_set_size(VTE_TERMINAL(widgets->InstallTerminal),columns,20);
yon_gtk_widget_set_scroll_window_for_scroll(widgets->InstallTerminal,GTK_SCROLLBAR(widgets->TerminalScroll));
gtk_paned_add2(GTK_PANED(widgets->TerminalPaned),widgets->TerminalRevealer); gtk_paned_add2(GTK_PANED(widgets->TerminalPaned),widgets->TerminalRevealer);
yon_interface_update(widgets); on_update_clicked(NULL,widgets);
yon_save_window_set_postsave_function(on_save_done,widgets); yon_save_window_set_postsave_function(on_save_done,widgets);
} }
yon_load_proceed(YON_CONFIG_LOCAL); yon_load_proceed(YON_CONFIG_LOCAL);

@ -83,13 +83,14 @@ typedef struct {
int progress_active; int progress_active;
config_str launch_arguments; config_str launch_arguments;
int launch_size; int launch_size;
int update_active;
GMutex update_mutex;
} config; } config;
typedef struct { typedef struct {
template_window_fields template_window_fields
GtkWidget *UpdateButton; GtkWidget *UpdateButton;
GtkWidget *InfoButton;
GtkWidget *LogButton;
GtkWidget *BuildingButton; GtkWidget *BuildingButton;
GtkWidget *KernelsUpperTree; GtkWidget *KernelsUpperTree;
GtkWidget *KernelsTree; GtkWidget *KernelsTree;
@ -261,7 +262,7 @@ void on_update_clicked(GtkWidget *, main_window *widgets);
void on_selection_changed(GtkWidget *self,GtkListBoxRow* row,main_window *widgets); void on_selection_changed(GtkWidget *self,GtkListBoxRow* row,main_window *widgets);
void on_info_clicked(GtkWidget *, main_window *widgets); void on_info_clicked(GtkWidget *, char *, kernels_tab *tab);
void on_changelog_clicked(GtkWidget *, kernels_tab *tab); void on_changelog_clicked(GtkWidget *, kernels_tab *tab);

@ -61,8 +61,20 @@
#define OPERATION_IN_PROGRESS_LABEL _("Terminal operation in process") #define OPERATION_IN_PROGRESS_LABEL _("Terminal operation in process")
#define PACKAGE_REMOVED_BUT_NOT_DISABLED_LABEL _("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.") #define PACKAGE_REMOVED_BUT_NOT_DISABLED_LABEL _("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.")
#define MODULE_INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install kernel")," ",target,"?",NULL) #define KERNEL_MODULE_INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install kernel module")," ",target,"?",NULL)
#define PACKAGE_INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install package")," ",target,"?",NULL) #define KERNEL_PACKAGE_INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install kernel package")," ",target,"?",NULL)
#define MODULE_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to remove module")," ",target,"?",NULL) #define KERNEL_MODULE_UPDATE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to update kernel module")," ",target,"?",NULL)
#define PACKAGE_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to remove package")," ",target,"?",NULL) #define KERNEL_PACKAGE_UPDATE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to update kernel package")," ",target,"?",NULL)
#define LAUNCH_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to launch")," ",target," ",_("for boot?\n\nChanges will be applied after system restart"),NULL) #define KERNEL_MODULE_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to remove kernel module")," ",target,"?",NULL)
#define KERNEL_REMOVE_LAST_CONFIRMATION_LABEL(target) yon_char_unite(_("The kernel is the only one in the system. If you remove it, it will become impossible to boot. Do you really want to remove")," ",target,"?",NULL)
#define KERNEL_PACKAGE_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to remove kernel package")," ",target,"?",NULL)
#define ADDITION_MODULE_INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install kernel addition package")," ",target,"?",NULL)
#define ADDITION_PACKAGE_INSTALL_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to install kernel addition package")," ",target,"?",NULL)
#define ADDITION_MODULE_UPDATE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to update kernel addition module")," ",target,"?",NULL)
#define ADDITION_PACKAGE_UPDATE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to update kernel addition package")," ",target,"?",NULL)
#define ADDITION_MODULE_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to remove kernel addition module")," ",target,"?",NULL)
#define ADDITION_PACKAGE_REMOVE_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to remove kernel addition package")," ",target,"?",NULL)
#define LAUNCH_CONFIRMATION_LABEL(target) yon_char_unite(_("Are you sure want to launch")," ",target," ",_("for boot?\n\nChanges will be applied after system restart"),NULL)
#define UPDATE_MODULE_LABEL _("Update module")
#define UPDATE_PACKAGE_LABEL _("Update package")

@ -98,7 +98,7 @@
<property name="xalign">0</property> <property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
@ -138,7 +138,7 @@
<property name="xalign">0</property> <property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
@ -210,6 +210,7 @@
<object class="GtkButton" id="ModuleUpdateButton"> <object class="GtkButton" id="ModuleUpdateButton">
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Update module</property>
<property name="margin-bottom">5</property> <property name="margin-bottom">5</property>
<property name="image">image1</property> <property name="image">image1</property>
<style> <style>
@ -273,6 +274,7 @@
<object class="GtkButton" id="PackageUpdateButton"> <object class="GtkButton" id="PackageUpdateButton">
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Update package</property>
<property name="margin-bottom">5</property> <property name="margin-bottom">5</property>
<property name="image">image2</property> <property name="image">image2</property>
<style> <style>

@ -92,12 +92,13 @@
<child> <child>
<object class="GtkLabel" id="ModuleLabel"> <object class="GtkLabel" id="ModuleLabel">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">True</property>
<property name="label" translatable="yes">Module</property> <property name="label" translatable="yes">Module</property>
<property name="track-visited-links">False</property>
<property name="xalign">0</property> <property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
@ -136,7 +137,7 @@
<property name="xalign">0</property> <property name="xalign">0</property>
</object> </object>
<packing> <packing>
<property name="expand">True</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">1</property> <property name="position">1</property>
</packing> </packing>
@ -245,6 +246,7 @@
<object class="GtkButton" id="ModuleUpdateButton"> <object class="GtkButton" id="ModuleUpdateButton">
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Update module</property>
<property name="margin-bottom">5</property> <property name="margin-bottom">5</property>
<property name="image">image1</property> <property name="image">image1</property>
<style> <style>
@ -308,6 +310,7 @@
<object class="GtkButton" id="PackageUpdateButton"> <object class="GtkButton" id="PackageUpdateButton">
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Update package</property>
<property name="margin-bottom">5</property> <property name="margin-bottom">5</property>
<property name="image">image2</property> <property name="image">image2</property>
<style> <style>

@ -260,4 +260,19 @@ background:transparent;
.install_icon { .install_icon {
color:#073763; color:#073763;
}
.label_link {
color:@theme_selected_bg_color;
text-decoration: underline;
}
.label_link:hover {
color:@theme_selected_bg_color;
}
.label_link:active {
color:@theme_selected_fg_color;
background:@theme_selected_bg_color;
} }

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.40.0 --> <!-- Generated with glade 3.38.2 -->
<interface domain="ubl-settings-kernel"> <interface domain="ubl-settings-kernel">
<requires lib="gtk+" version="3.24"/> <requires lib="gtk+" version="3.24"/>
<requires lib="vte-2.91" version="0.76"/> <requires lib="vte-2.91" version="0.76"/>
@ -112,11 +112,6 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.sync-symbolic</property> <property name="icon-name">com.ublinux.libublsettingsui-gtk3.sync-symbolic</property>
</object> </object>
<object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.important-symbolic</property>
</object>
<object class="GtkImage" id="image4"> <object class="GtkImage" id="image4">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -157,16 +152,9 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkButton" id="InfoButton"> <object class="GtkSeparator">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property> <property name="can-focus">False</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Open package information</property>
<property name="image">image2</property>
<style>
<class name="thin"/>
</style>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>

@ -214,28 +214,70 @@ msgid ""
msgstr "" msgstr ""
#: source/ubl-strings.h:64 #: source/ubl-strings.h:64
msgid "Are you sure want to install kernel" msgid "Are you sure want to install kernel module"
msgstr "" msgstr ""
#: source/ubl-strings.h:65 #: source/ubl-strings.h:65
msgid "Are you sure want to install package" msgid "Are you sure want to install kernel package"
msgstr "" msgstr ""
#: source/ubl-strings.h:66 #: source/ubl-strings.h:66
msgid "Are you sure want to remove module" msgid "Are you sure want to update kernel module"
msgstr "" msgstr ""
#: source/ubl-strings.h:67 #: source/ubl-strings.h:67
msgid "Are you sure want to remove package" msgid "Are you sure want to update kernel package"
msgstr "" msgstr ""
#: source/ubl-strings.h:68 #: source/ubl-strings.h:68
msgid "Are you sure want to remove kernel module"
msgstr ""
#: source/ubl-strings.h:69
msgid ""
"The kernel is the only one in the system. If you remove it, it will become "
"impossible to boot. Do you really want to remove"
msgstr ""
#: source/ubl-strings.h:70
msgid "Are you sure want to remove kernel package"
msgstr ""
#: source/ubl-strings.h:71 source/ubl-strings.h:72
msgid "Are you sure want to install kernel addition package"
msgstr ""
#: source/ubl-strings.h:73
msgid "Are you sure want to update kernel addition module"
msgstr ""
#: source/ubl-strings.h:74
msgid "Are you sure want to update kernel addition package"
msgstr ""
#: source/ubl-strings.h:75
msgid "Are you sure want to remove kernel addition module"
msgstr ""
#: source/ubl-strings.h:76
msgid "Are you sure want to remove kernel addition package"
msgstr ""
#: source/ubl-strings.h:77
msgid "Are you sure want to launch" msgid "Are you sure want to launch"
msgstr "" msgstr ""
#: source/ubl-strings.h:68 #: source/ubl-strings.h:77
msgid "" msgid ""
"for boot?\n" "for boot?\n"
"\n" "\n"
"Changes will be applied after system restart" "Changes will be applied after system restart"
msgstr "" msgstr ""
#: source/ubl-strings.h:79
msgid "Update module"
msgstr ""
#: source/ubl-strings.h:80
msgid "Update package"
msgstr ""

@ -218,26 +218,60 @@ msgstr ""
"отключен и удалён." "отключен и удалён."
#: source/ubl-strings.h:64 #: source/ubl-strings.h:64
msgid "Are you sure want to install kernel" msgid "Are you sure want to install kernel module"
msgstr "Вы хотите установить в систему ядро" msgstr "Вы хотите установить в систему ядро"
#: source/ubl-strings.h:65 #: source/ubl-strings.h:65
msgid "Are you sure want to install package" msgid "Are you sure want to install kernel package"
msgstr "Вы хотите установить в систему пакет с ядром" msgstr "Вы хотите установить в систему пакет с ядром"
#: source/ubl-strings.h:66 #: source/ubl-strings.h:66
msgid "Are you sure want to remove module" msgid "Are you sure want to update kernel module"
msgstr "Вы действительно хотите удалить из системы пакет с модулем ядра" msgstr "Вы хотите обновить пакет с модулем ядра"
#: source/ubl-strings.h:67 #: source/ubl-strings.h:67
msgid "Are you sure want to remove package" msgid "Are you sure want to update kernel package"
msgstr "Вы действительно хотите удалить из системы пакет с ядром" msgstr "Вы действительно хотите обновить пакет с ядром "
#: source/ubl-strings.h:68 #: source/ubl-strings.h:68
msgid "Are you sure want to remove kernel module"
msgstr "Вы действительно хотите удалить из системы пакет с модулем ядра"
#: source/ubl-strings.h:69
msgid ""
"The kernel is the only one in the system. If you remove it, it will become "
"impossible to boot. Do you really want to remove"
msgstr "Ядро является единственным в системе. При удалении загрузка станет невозможна. Вы действительно хотите удалить"
#: source/ubl-strings.h:70
msgid "Are you sure want to remove kernel package"
msgstr "Вы действительно хотите удалить из системы пакет с ядром"
#: source/ubl-strings.h:71 source/ubl-strings.h:72
msgid "Are you sure want to install kernel addition package"
msgstr "Вы хотите установить в систему пакет с модулем дополнения"
#: source/ubl-strings.h:73
msgid "Are you sure want to update kernel addition module"
msgstr "Вы хотите обновить пакет с модулем дополнения"
#: source/ubl-strings.h:74
msgid "Are you sure want to update kernel addition package"
msgstr "Вы действительно хотите обновить пакет с дополнением"
#: source/ubl-strings.h:75
msgid "Are you sure want to remove kernel addition module"
msgstr "Вы действительно хотите удалить из системы пакет с модулем дополнения"
#: source/ubl-strings.h:76
msgid "Are you sure want to remove kernel addition package"
msgstr "Вы действительно хотите удалить из системы пакет с дополнением"
#: source/ubl-strings.h:77
msgid "Are you sure want to launch" msgid "Are you sure want to launch"
msgstr "Выбрать ядро" msgstr "Выбрать ядро"
#: source/ubl-strings.h:68 #: source/ubl-strings.h:77
msgid "" msgid ""
"for boot?\n" "for boot?\n"
"\n" "\n"
@ -246,3 +280,11 @@ msgstr ""
"загрузочным?\n" "загрузочным?\n"
"\n" "\n"
"Изменения вступят в силу после перезагрузки." "Изменения вступят в силу после перезагрузки."
#: source/ubl-strings.h:79
msgid "Update module"
msgstr "Обновить модуль"
#: source/ubl-strings.h:80
msgid "Update package"
msgstr "Обновить пакет"

Loading…
Cancel
Save